-Class RuntimeApi
+
+Class SessionShell
@@ -97,12 +97,15 @@ Class RuntimeApi
- Assembly
- HiNc.dll
- Runtime API for machining operations.
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
- public class RuntimeApi : ICsScriptApi
+ public class SessionShell : ISessionShell
@@ -112,14 +115,14 @@ Class RuntimeApi
Inheritance
- RuntimeApi
+ SessionShell
- Implements
-
-
+
@@ -184,9 +187,9 @@ Class RuntimeApi
-
+
-
+
DefaultParaTemplateDimension
@@ -217,9 +220,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -251,9 +254,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -284,9 +287,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -317,9 +320,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EmbeddedLogMode
@@ -350,9 +353,9 @@ public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -383,9 +386,9 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnableIndividualStepAdjustmentLog
@@ -416,9 +419,9 @@ public static bool EnableIndividualStepAdjustmentLog { get; set; }
-
+
-
+
EnableMapOnSelectionEnd
@@ -449,9 +452,9 @@ public bool EnableMapOnSelectionEnd { get; set; }
-
+
-
+
EnableMotionDependentMachiningResolution
@@ -482,9 +485,9 @@ public bool EnableMotionDependentMachiningResolution { get; set; }
-
+
-
+
EnableMzLeverWeightingOnTraining
@@ -515,9 +518,9 @@ public bool EnableMzLeverWeightingOnTraining { get; set; }
-
+
-
+
EnablePauseOnCollision
@@ -549,9 +552,9 @@ public bool EnablePauseOnCollision { get; set; }
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
- Assembly
- HiNc.dll
Runtime API for machining operations.
+End-user-facing facade for a machining session: aggregates session lifecycle, +NC playback, optimization, geometry I/O, and scripting infrastructure into a +single delegation surface. Used as the C# script globals object and as the +concrete target of ISessionCommand implementations.
public class RuntimeApi : ICsScriptApi
+ public class SessionShell : ISessionShell
- Implements
- - +
+
DefaultParaTemplateDimension
@@ -217,9 +220,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -251,9 +254,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -284,9 +287,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -317,9 +320,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EmbeddedLogMode
@@ -350,9 +353,9 @@ public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -383,9 +386,9 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnableIndividualStepAdjustmentLog
@@ -416,9 +419,9 @@ public static bool EnableIndividualStepAdjustmentLog { get; set; }
-
+
-
+
EnableMapOnSelectionEnd
@@ -449,9 +452,9 @@ public bool EnableMapOnSelectionEnd { get; set; }
-
+
-
+
EnableMotionDependentMachiningResolution
@@ -482,9 +485,9 @@ public bool EnableMotionDependentMachiningResolution { get; set; }
-
+
-
+
EnableMzLeverWeightingOnTraining
@@ -515,9 +518,9 @@ public bool EnableMzLeverWeightingOnTraining { get; set; }
-
+
-
+
EnablePauseOnCollision
@@ -549,9 +552,9 @@ public bool EnablePauseOnCollision { get; set; }
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
DiffVisualRadius_mm
@@ -251,9 +254,9 @@ public double DiffVisualRadius_mm { get; set; } - + -
+
DispCacheMb
@@ -284,9 +287,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -317,9 +320,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EmbeddedLogMode
@@ -350,9 +353,9 @@ public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -383,9 +386,9 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnableIndividualStepAdjustmentLog
@@ -416,9 +419,9 @@ public static bool EnableIndividualStepAdjustmentLog { get; set; }
-
+
-
+
EnableMapOnSelectionEnd
@@ -449,9 +452,9 @@ public bool EnableMapOnSelectionEnd { get; set; }
-
+
-
+
EnableMotionDependentMachiningResolution
@@ -482,9 +485,9 @@ public bool EnableMotionDependentMachiningResolution { get; set; }
-
+
-
+
EnableMzLeverWeightingOnTraining
@@ -515,9 +518,9 @@ public bool EnableMzLeverWeightingOnTraining { get; set; }
-
+
-
+
EnablePauseOnCollision
@@ -549,9 +552,9 @@ public bool EnablePauseOnCollision { get; set; }
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
DispCache_Mb
@@ -317,9 +320,9 @@ public long DispCache_Mb { get; set; } - + -
+
EmbeddedLogMode
@@ -350,9 +353,9 @@ public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -383,9 +386,9 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnableIndividualStepAdjustmentLog
@@ -416,9 +419,9 @@ public static bool EnableIndividualStepAdjustmentLog { get; set; }
-
+
-
+
EnableMapOnSelectionEnd
@@ -449,9 +452,9 @@ public bool EnableMapOnSelectionEnd { get; set; }
-
+
-
+
EnableMotionDependentMachiningResolution
@@ -482,9 +485,9 @@ public bool EnableMotionDependentMachiningResolution { get; set; }
-
+
-
+
EnableMzLeverWeightingOnTraining
@@ -515,9 +518,9 @@ public bool EnableMzLeverWeightingOnTraining { get; set; }
-
+
-
+
EnablePauseOnCollision
@@ -549,9 +552,9 @@ public bool EnablePauseOnCollision { get; set; }
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnableCollisionDetection
@@ -383,9 +386,9 @@ public bool EnableCollisionDetection { get; set; } - + -
+
EnableIndividualStepAdjustmentLog
@@ -416,9 +419,9 @@ public static bool EnableIndividualStepAdjustmentLog { get; set; }
-
+
-
+
EnableMapOnSelectionEnd
@@ -449,9 +452,9 @@ public bool EnableMapOnSelectionEnd { get; set; }
-
+
-
+
EnableMotionDependentMachiningResolution
@@ -482,9 +485,9 @@ public bool EnableMotionDependentMachiningResolution { get; set; }
-
+
-
+
EnableMzLeverWeightingOnTraining
@@ -515,9 +518,9 @@ public bool EnableMzLeverWeightingOnTraining { get; set; }
-
+
-
+
EnablePauseOnCollision
@@ -549,9 +552,9 @@ public bool EnablePauseOnCollision { get; set; }
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnableMapOnSelectionEnd
@@ -449,9 +452,9 @@ public bool EnableMapOnSelectionEnd { get; set; } - + -
+
EnableMotionDependentMachiningResolution
@@ -482,9 +485,9 @@ public bool EnableMotionDependentMachiningResolution { get; set; }
-
+
-
+
EnableMzLeverWeightingOnTraining
@@ -515,9 +518,9 @@ public bool EnableMzLeverWeightingOnTraining { get; set; }
-
+
-
+
EnablePauseOnCollision
@@ -549,9 +552,9 @@ public bool EnablePauseOnCollision { get; set; }
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnableMzLeverWeightingOnTraining
@@ -515,9 +518,9 @@ public bool EnableMzLeverWeightingOnTraining { get; set; } - + -
+
EnablePauseOnCollision
@@ -549,9 +552,9 @@ public bool EnablePauseOnCollision { get; set; }
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnablePauseOnFailure
@@ -582,9 +585,9 @@ public bool EnablePauseOnFailure { get; set; } - + -
+
EnablePhysics
@@ -615,9 +618,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; }
- Remarks
+ Remarks
The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option.
-
+
-
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnableSampleNormalization
@@ -643,7 +646,7 @@ public bool EnableSampleNormalization { get; set; } -Remarks
+Remarks
The input normalization deminish the quantity effect. The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj Don't apply this option.
@@ -652,9 +655,9 @@ Don't apply this option. - + -
+
EnableSoftNcRunner
@@ -686,9 +689,9 @@ public bool EnableSoftNcRunner { get; set; }
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWearEffect
@@ -719,9 +722,9 @@ public bool EnableWearEffect { get; set; } - + -
+
FeedPerCycle
@@ -752,9 +755,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
FeedPerTooth
@@ -785,9 +788,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } - + -
+
Fixture
@@ -818,15 +821,14 @@ public Fixture Fixture { get; set; }
-
+
-
+
Global
- Global variables.
-
+
@@ -851,9 +853,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Global
-Global variables.
-
+
InitSpindleTemperature_C
@@ -884,9 +886,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -916,9 +918,9 @@ public double InitSpindleTemperature_C { get; set; } - + -
+
MachiningMotionResolution
@@ -949,9 +951,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MachiningResolution
@@ -983,9 +985,9 @@ public double MachiningResolution { get; set; } - + -
+
MachiningResolution_mm
@@ -1016,9 +1018,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MachiningSession
@@ -1047,9 +1049,9 @@ public double MachiningResolution_mm { get; set; } - + -
+
MapTask
@@ -1079,15 +1081,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1113,15 +1115,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation. -This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
@@ -1148,9 +1150,9 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Gets or sets the number of divisions per cycle for milling force calculation. -This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.NcOptOption
@@ -1181,9 +1183,9 @@ public NcOptOption NcOptOption { get; set; } - + -
+
OptEnableDepthCompensation
@@ -1214,9 +1216,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptEnableFeedrate
@@ -1247,9 +1249,9 @@ public bool OptEnableFeedrate { get; set; } - + -
+
OptEnableForwardCompensation
@@ -1280,9 +1282,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptEnableInterpolation
@@ -1313,9 +1315,9 @@ public bool OptEnableInterpolation { get; set; } - + -
+
OptEnableSideCompensation
@@ -1346,9 +1348,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptExtendedPostDistance_mm
@@ -1380,9 +1382,9 @@ public double OptExtendedPostDistance_mm { get; set; } - + -
+
OptExtendedPreDistance_mm
@@ -1414,9 +1416,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1448,9 +1450,9 @@ public double OptFeedrateAssignmentRatio { get; set; } - + -
+
OptMaxAcceleration_mmds2
@@ -1481,9 +1483,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1514,9 +1516,9 @@ public double OptMaxFeedPerTooth_mm { get; set; } - + -
+
OptMaxFeedrate_mmdmin
@@ -1547,9 +1549,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptMaxJerk_mmds3
@@ -1580,9 +1582,9 @@ public double OptMaxJerk_mmds3 { get; set; } - + -
+
OptMinFeedPerTooth_mm
@@ -1613,9 +1615,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1646,9 +1648,9 @@ public double OptMinFeedrate_mmdmin { get; set; } - + -
+
OptPreferedForce_N
@@ -1679,9 +1681,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptRapidFeed_mmdmin
@@ -1712,9 +1714,9 @@ public double OptRapidFeed_mmdmin { get; set; } - + -
+
OptSpindlePowerSafetyFactor
@@ -1745,9 +1747,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -1779,9 +1781,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; } - + -
+
OptSpindleTorqueSafetyFactor
@@ -1812,9 +1814,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -1846,9 +1848,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; } - + -
+
OptThermalYieldSafetyFactor
@@ -1879,9 +1881,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -1913,9 +1915,9 @@ public double OptThermalYieldUtilizationFactor { get; set; } - + -
+
OptYieldingSafetyFactor
@@ -1946,9 +1948,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptYieldingUtilizationFactor
@@ -1980,9 +1982,9 @@ public double OptYieldingUtilizationFactor { get; set; } - + -
+
ScriptOptions
@@ -2012,14 +2014,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
- Obsolete alias for SessionProgress (session-scoped progress and messages).
+ Obsolete alias for SessionProgress (session-scoped progress and messages).
@@ -2046,9 +2048,9 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
SessionMessageHost
-Obsolete alias for SessionProgress (session-scoped progress and messages).
+Obsolete alias for SessionProgress (session-scoped progress and messages).
+
SessionProgress
@@ -2079,9 +2081,9 @@ public SessionProgress SessionProgress { get; }
-
+
-
+
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; }
-
+
-
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
StepCount
@@ -2112,9 +2114,9 @@ public int StepCount { get; } - + -
+
Workpiece
@@ -2149,9 +2151,9 @@ public Workpiece Workpiece { get; set; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
AddTimeDataByFile(string, string, double, double)
@@ -2198,9 +2200,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub - + -
+
AddTimeDataByFile(string, string, string, string)
@@ -2247,9 +2249,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
AdjustedFeedPerCycle(double, double)
@@ -2290,9 +2292,9 @@ public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale, - + -
+
AppendMessagesToFile(string, params string[])
@@ -2327,9 +2329,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
BeginPreserve()
@@ -2355,9 +2357,9 @@ public void BeginPreserve() - + -
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2395,9 +2397,9 @@ milling step() has not triggered yet.
-
+
-
+
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user.
-
+
-
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
BeginSession()
@@ -2423,9 +2425,9 @@ Not for end user. - + -
+
ClearDefectDisplayee()
@@ -2451,9 +2453,9 @@ public void ClearDefectDisplayee()
-
+
-
+
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
ClearTimeMappingData()
@@ -2479,9 +2481,9 @@ public void ClearTimeMappingData() - + -
+
Diff(double)
@@ -2513,9 +2515,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
EndPreserve()
@@ -2541,9 +2543,9 @@ public void EndPreserve() - + -
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2580,9 +2582,9 @@ public void EndPreserve()
-
+
-
+
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user.
-
+
-
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
EndSession()
@@ -2608,9 +2610,9 @@ Not for end user. - + -
+
ErrorMessage(string)
@@ -2642,9 +2644,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
FixedPace(double, double)
@@ -2685,9 +2687,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub - + -
+
GetMillingStep(int)
@@ -2725,9 +2727,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
GetStickMachiningToolObservationHeight_mm(int)
@@ -2765,9 +2767,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId) - + -
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -2805,9 +2807,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -2850,9 +2852,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId) - + -
+
LoadCuttingParaByFile(string)
@@ -2884,9 +2886,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile)
-
+
-
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -2929,9 +2931,9 @@ public void LoadCuttingParaByFile(string relFile) - + -
+
MapByActualTime(string, CycleSamplingMode)
@@ -2966,9 +2968,9 @@ public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSampli
-
+
-
+
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam
-
+
-
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
MapSeriesByCsvFile(string, CycleSamplingMode)
@@ -3003,9 +3005,9 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam - + -
+
MapSingleByCsvFile(string)
@@ -3038,9 +3040,9 @@ public void MapSingleByCsvFile(string csvFile)
-
+
-
+
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message)
-
+
-
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
Message(string)
@@ -3072,9 +3074,9 @@ public void Message(string message) - + -
+
OptCallPreferFuncIndexDictionary()
@@ -3106,9 +3108,9 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall
-
+
-
+
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
OptimizeToFiles(string)
@@ -3140,9 +3142,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q - + -
+
Pace()
@@ -3165,16 +3167,16 @@ public void Pace()
- Remarks
+ Remarks
Waits for the player to signal the next pace.
-
+
-
+
Pause()
@@ -3200,9 +3202,9 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
Waits for the player to signal the next pace.
Pause()
@@ -3200,9 +3202,9 @@ public void Pause() - + -
+
PlayAct(IAct, IGetSentence, CancellationToken?)
@@ -3240,9 +3242,9 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
PlayClTeleport(double, double, double, double, double, double)
@@ -3289,9 +3291,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou - + -
+
PlayCsvFile(string)
@@ -3323,9 +3325,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
PlayNc(string, string)
@@ -3360,9 +3362,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--") - + -
+
PlayNcFile(string)
@@ -3394,9 +3396,9 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
PlayToolingTeleport(int)
@@ -3428,9 +3430,9 @@ public void PlayToolingTeleport(int toolId) - + -
+
PowerReset()
@@ -3458,9 +3460,9 @@ public void PowerReset()
-
+
-
+
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
Preserve()
@@ -3486,9 +3488,9 @@ public void Preserve() - + -
+
ProgressMessage(string)
@@ -3520,9 +3522,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
ReTrainMillingPara(SampleFlag, string, double)
@@ -3560,9 +3562,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double - + -
+
ReadCsvByTimeInterpolation(string)
@@ -3595,9 +3597,9 @@ public void ReadCsvByTimeInterpolation(string csvFile)
-
+
-
+
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
ReadRuntimeGeom(string)
@@ -3629,9 +3631,9 @@ public void ReadRuntimeGeom(string relFile) - + -
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3675,9 +3677,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile)
-
+
-
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
RegisterWriteSyntaxPieces(string)
@@ -3710,9 +3712,9 @@ public void RegisterWriteSyntaxPieces(string relOutputFile) - + -
+
RegisterWriteSyntaxPiecesWithActs(string)
@@ -3745,9 +3747,9 @@ public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile)
-
+
-
+
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
RemoveFlyPiece()
@@ -3773,9 +3775,9 @@ public void RemoveFlyPiece() - + -
+
Reset()
@@ -3801,9 +3803,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
ResetRuntime()
@@ -3829,15 +3831,15 @@ public void ResetRuntime() - + -
+
RunNc(string, string)
Runs NC code directly from a string.
-Not for end user.
+Not for end user with no programing skill.
@@ -3873,15 +3875,15 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
Runs an NC file with the specified relative path.
-Not for end user.
+Not for end user with no programing skill.
@@ -3914,9 +3916,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
Runs NC code directly from a string. -Not for end user.
+Not for end user with no programing skill.RunNcFile(string)
Runs an NC file with the specified relative path. -Not for end user.
+Not for end user with no programing skill.
+
ScaledFeedPerCycle(double)
@@ -3954,9 +3956,9 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale)
+
-
+
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect()
-
+
-
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
ScanRuntimeGeomInfDefect()
@@ -3988,9 +3990,9 @@ public bool? ScanRuntimeGeomInfDefect() - + -
+
SetAllSnapshotSyntaxEnabled(bool)
@@ -4024,9 +4026,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
SetNcResolutionFeedPerCycle()
@@ -4051,9 +4053,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled) - + -
+
SetNcResolutionFeedPerTooth()
@@ -4078,9 +4080,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled)
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
SetNcResolutionFixed(double, double)
@@ -4114,9 +4116,9 @@ public void SetAllSnapshotSyntaxEnabled(bool isEnabled) - + -
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -4151,9 +4153,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4188,9 +4190,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) + -
+
ShiftDistance_mm(double)
@@ -4227,9 +4229,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
ShiftTime_s(double)
@@ -4266,9 +4268,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) + -
+
TrainMillingPara(SampleFlag, string, double, ICuttingPara)
@@ -4309,9 +4311,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
WarningMessage(string)
@@ -4343,9 +4345,9 @@ public void WarningMessage(string message) - + -
+
WriteRuntimeGeom(string)
@@ -4377,9 +4379,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
WriteRuntimeGeomToObj(string, double)
@@ -4414,9 +4416,9 @@ public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0) + -
+
WriteRuntimeGeomToPly(string, double)
@@ -4451,9 +4453,9 @@ public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
WriteRuntimeGeomToStl(string, double)
@@ -4488,9 +4490,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) + -
+
WriteShotFiles(double, string)
@@ -4524,9 +4526,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
WriteShotFiles(string, double)
@@ -4561,9 +4563,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c - + -
+
WriteStepFiles(string)
@@ -4600,13 +4602,13 @@ public void WriteStepFiles(string relFileTemplate = "Output/[NcName].step.c
-
+
MachiningStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4634,13 +4636,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt
+
MachiningStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4667,13 +4669,13 @@ public event Action<MachiningStep> MachiningStepSelected
-
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
MachiningStepBuilt
Session-scoped event triggered when a machining step is built. -Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). +Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). For app-lifetime event, use MachiningStepBuilt instead.
MachiningStepSelected
Session-scoped event triggered when a machining step is selected. -Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+
SessionSourcedActEntry
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4700,13 +4702,13 @@ public event Action<SourcedActEntry> SessionSourcedActEntry
-
+
SessionStepBuilt
Session-scoped event triggered when a machining step is built.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
For app-lifetime event, use MachiningStepBuilt instead.
@@ -4734,13 +4736,13 @@ public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt
+
SessionStepSelected
Session-scoped event triggered when a machining step is selected.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4767,13 +4769,13 @@ public event Action<MachiningStep> SessionStepSelected
-
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution. -Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().SessionStepBuilt
Session-scoped event triggered when a machining step is built. -Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). +Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). For app-lifetime event, use MachiningStepBuilt instead.
SessionStepSelected
Session-scoped event triggered when a machining step is selected. -Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+
SessionSyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
@@ -4800,13 +4802,13 @@ public event Action<SyntaxPiece> SessionSyntaxPieceRan
-
+
SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed.
-Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
index b71ec1bb..0e5f8d3d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RuntimeController.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html
@@ -2,11 +2,11 @@
- Class RuntimeController | HiAPI-C# 2025
+ Class SessionShellController | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
Session-scoped event triggered when a syntax piece has been executed. -Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().SyntaxPieceRan
Session-scoped event triggered when a syntax piece has been executed. -Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
+Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession().
-Class RuntimeController
+
+Class SessionShellController
@@ -97,15 +97,15 @@ Class RuntimeController
- Assembly
- HiNc.dll
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
@@ -116,7 +116,7 @@ public class RuntimeController : ControllerBase
- RuntimeController
+ SessionShellController
@@ -707,10 +707,10 @@ public class RuntimeController : ControllerBase
-
+
-
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
- Assembly
- HiNc.dll
Provides a C# scripting API for controlling and manipulating the milling course. -Allows for runtime control of milling operations, geometry manipulation, and data analysis.
+HTTP controller exposing SessionShell over the web API. +Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
[ApiController]
[Route("api/[controller]/[action]")]
-public class RuntimeController : ControllerBase
+public class SessionShellController : ControllerBase
- RuntimeController(LocalProjectService)
+
+ SessionShellController(LocalProjectService)
@@ -719,7 +719,7 @@ public class RuntimeController : ControllerBase
- public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
Parameters
@@ -743,14 +743,14 @@ public class RuntimeController : ControllerBase
-
+
-
+
DefaultParaTemplateDimension
-
+
@@ -776,9 +776,9 @@ public int DefaultParaTemplateDimension { get; set; }
-
+
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public RuntimeController(LocalProjectService projectService)
+ public SessionShellController(LocalProjectService projectService)
DefaultParaTemplateDimension
-
+
DiffVisualRadius_mm
@@ -810,9 +810,9 @@ public double DiffVisualRadius_mm { get; set; }
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; }
-
+
-
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
DispCacheMb
@@ -843,9 +843,9 @@ public long DispCacheMb { get; set; } - + -
+
DispCache_Mb
@@ -876,9 +876,9 @@ public long DispCache_Mb { get; set; }
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; }
-
+
-
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnableAutoMapOnSelectionEnd
@@ -909,9 +909,9 @@ public bool EnableAutoMapOnSelectionEnd { get; set; } - + -
+
EnableCollisionDetection
@@ -942,14 +942,14 @@ public bool EnableCollisionDetection { get; set; }
-
+
-
+
EnablePauseOnFailure
-
+
@@ -975,9 +975,9 @@ public bool EnablePauseOnFailure { get; set; }
-
+
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnablePauseOnFailure
-
+
EnablePhysics
@@ -1008,9 +1008,9 @@ public bool EnablePhysics { get; set; }
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; }
-
+
-
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWearEffect
@@ -1041,9 +1041,9 @@ public bool EnableWearEffect { get; set; } - + -
+
FeedPerCycle
@@ -1074,9 +1074,9 @@ public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; }
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; }
-
+
-
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
FeedPerTooth
@@ -1107,9 +1107,9 @@ public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } - + -
+
Global
@@ -1139,9 +1139,9 @@ public Dictionary<object, object> Global { get; }
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
InitSpindleTemperature_C
@@ -1172,9 +1172,9 @@ public double InitSpindleTemperature_C { get; set; } - + -
+
JsAceCompletionProfileJsonArray
@@ -1204,9 +1204,9 @@ public double InitSpindleTemperature_C { get; set; }
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; }
-
+
-
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MachiningMotionResolution
@@ -1237,9 +1237,9 @@ public IMachiningMotionResolution MachiningMotionResolution { get; set; } - + -
+
MachiningResolution
@@ -1272,9 +1272,9 @@ public double MachiningResolution { get; set; }
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MachiningResolution_mm
@@ -1305,9 +1305,9 @@ public double MachiningResolution_mm { get; set; } - + -
+
MachiningSession
@@ -1336,9 +1336,9 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; }
-
+
-
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MapTask
@@ -1368,15 +1368,15 @@ public double MachiningResolution_mm { get; set; } - + -
+
MillingCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1402,15 +1402,15 @@ public static int MillingCycleDivisionNum { get; set; }
-
+
-
+
MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation.
-This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
@@ -1437,14 +1437,14 @@ public static int MillingForceCycleDivisionNum { get; set; }
-
+
-
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Gets or sets the number of divisions per cycle for milling force calculation. -This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.MillingForceCycleDivisionNum
Gets or sets the number of divisions per cycle for milling force calculation. -This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used.
+
NcOptOption
-
+
@@ -1470,9 +1470,9 @@ public NcOptOption NcOptOption { get; set; }
-
+
-
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
+
OptEnableDepthCompensation
@@ -1503,9 +1503,9 @@ public bool OptEnableDepthCompensation { get; set; }
-
+
-
+
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; }
-
+
-
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptEnableFeedrate
@@ -1536,9 +1536,9 @@ public bool OptEnableFeedrate { get; set; } - + -
+
OptEnableForwardCompensation
@@ -1569,9 +1569,9 @@ public bool OptEnableForwardCompensation { get; set; }
-
+
-
+
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; }
-
+
-
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptEnableInterpolation
@@ -1602,9 +1602,9 @@ public bool OptEnableInterpolation { get; set; } - + -
+
OptEnableSideCompensation
@@ -1635,9 +1635,9 @@ public bool OptEnableSideCompensation { get; set; }
-
+
-
+
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; }
-
+
-
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptExtendedPostDistance_mm
@@ -1669,9 +1669,9 @@ public double OptExtendedPostDistance_mm { get; set; } - + -
+
OptExtendedPreDistance_mm
@@ -1703,9 +1703,9 @@ public double OptExtendedPreDistance_mm { get; set; }
-
+
-
+
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; }
-
+
-
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptFeedrateAssignmentRatio
@@ -1737,9 +1737,9 @@ public double OptFeedrateAssignmentRatio { get; set; } - + -
+
OptMaxAcceleration_mmds2
@@ -1770,9 +1770,9 @@ public double OptMaxAcceleration_mmds2 { get; set; }
-
+
-
+
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; }
-
+
-
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptMaxFeedPerTooth_mm
@@ -1803,9 +1803,9 @@ public double OptMaxFeedPerTooth_mm { get; set; } - + -
+
OptMaxFeedrate_mmdmin
@@ -1836,9 +1836,9 @@ public double OptMaxFeedrate_mmdmin { get; set; }
-
+
-
+
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; }
-
+
-
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptMaxJerk_mmds3
@@ -1869,9 +1869,9 @@ public double OptMaxJerk_mmds3 { get; set; } - + -
+
OptMinFeedPerTooth_mm
@@ -1902,9 +1902,9 @@ public double OptMinFeedPerTooth_mm { get; set; }
-
+
-
+
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; }
-
+
-
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptMinFeedrate_mmdmin
@@ -1935,9 +1935,9 @@ public double OptMinFeedrate_mmdmin { get; set; } - + -
+
OptPreferedForce_N
@@ -1968,9 +1968,9 @@ public double OptPreferedForce_N { get; set; }
-
+
-
+
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; }
-
+
-
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptRapidFeed_mmdmin
@@ -2001,9 +2001,9 @@ public double OptRapidFeed_mmdmin { get; set; } - + -
+
OptSpindlePowerSafetyFactor
@@ -2034,9 +2034,9 @@ public double OptSpindlePowerSafetyFactor { get; set; }
-
+
-
+
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; }
-
+
-
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptSpindlePowerUtilizationFactor
@@ -2068,9 +2068,9 @@ public double OptSpindlePowerUtilizationFactor { get; set; } - + -
+
OptSpindleTorqueSafetyFactor
@@ -2101,9 +2101,9 @@ public double OptSpindleTorqueSafetyFactor { get; set; }
-
+
-
+
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; }
-
+
-
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptSpindleTorqueUtilizationFactor
@@ -2135,9 +2135,9 @@ public double OptSpindleTorqueUtilizationFactor { get; set; } - + -
+
OptThermalYieldSafetyFactor
@@ -2168,9 +2168,9 @@ public double OptThermalYieldSafetyFactor { get; set; }
-
+
-
+
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; }
-
+
-
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptThermalYieldUtilizationFactor
@@ -2202,9 +2202,9 @@ public double OptThermalYieldUtilizationFactor { get; set; } - + -
+
OptYieldingSafetyFactor
@@ -2235,9 +2235,9 @@ public double OptYieldingSafetyFactor { get; set; }
-
+
-
+
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
- RuntimeApi
-
-
-
- Gets the runtime API instance.
-
-
-
-
- public RuntimeApi RuntimeApi { get; }
-
-
-
-
-
-
- Property Value
-
- - RuntimeApi
-
-
-
-
-
-
-
-
-
-
-
-
-
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
OptYieldingUtilizationFactor
@@ -2269,41 +2269,9 @@ public double OptYieldingUtilizationFactor { get; set; } - + -- RuntimeApi - -
- -Gets the runtime API instance.
-public RuntimeApi RuntimeApi { get; }
- Property Value
--
-
- RuntimeApi - -
+
ScriptOptions
@@ -2332,14 +2300,14 @@ public double OptYieldingUtilizationFactor { get; set; }
-
+
-
+
SessionMessageHost
-
+
@@ -2365,9 +2333,41 @@ public SessionProgress SessionMessageHost { get; }
-
+
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
SessionMessageHost
-
+
+ SessionShell
+
+
+
+ Gets the underlying SessionShell instance.
+
+
+
+
+ public SessionShell SessionShell { get; }
+
+
+
+
+
+
+ Property Value
+
+ - SessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
StepCount
@@ -2402,9 +2402,9 @@ public int StepCount { get; }
-
+
-
+
AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub
-
+
-
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
Gets the underlying SessionShell instance.
+public SessionShell SessionShell { get; }
+ AddTimeDataByFile(string, string, double, double)
@@ -2452,9 +2452,9 @@ public bool AddTimeDataByFile(string key, string relFile, double beginTime, doub - + -
+
AddTimeDataByFile(string, string, string, string)
@@ -2502,9 +2502,9 @@ public bool AddTimeDataByFile(string key, string relFile, string beginTimeText,
-
+
-
+
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags)
+
-
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
AppendMessagesToFile(string, params string[])
@@ -2540,9 +2540,9 @@ public void AppendMessagesToFile(string dstRelFile, params string[] flags) + -
+
BeginPreserve()
@@ -2569,9 +2569,9 @@ public void BeginPreserve()
-
+
-
+
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe
-
+
-
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
BeginSelection(string, AnchorMode, IStepShift)
@@ -2610,14 +2610,14 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe - + -
+
BeginSession()
-
+
@@ -2638,9 +2638,9 @@ public void BeginSession()
-
+
-
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
+
ClearTimeMappingData()
@@ -2667,9 +2667,9 @@ public void ClearTimeMappingData()
-
+
-
+
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm)
-
+
-
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
Diff(double)
@@ -2702,9 +2702,9 @@ public void Diff(double detectionRadius_mm) - + -
+
EmbedSingleDataPerStepByCsvFile(string)
@@ -2738,9 +2738,9 @@ public void EmbedSingleDataPerStepByCsvFile(string csvFile)
-
+
-
+
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve()
-
+
-
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
EndPreserve()
@@ -2767,9 +2767,9 @@ public void EndPreserve() - + -
+
EndSelection(string, AnchorMode, IStepShift)
@@ -2807,14 +2807,14 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,
-
+
-
+
EndSession()
-
+
@@ -2835,9 +2835,9 @@ public void EndSession()
-
+
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
EndSession()
-
+
ErrorMessage(string)
@@ -2870,9 +2870,9 @@ public void ErrorMessage(string message)
-
+
-
+
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub
-
+
-
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
FixedPace(double, double)
@@ -2914,9 +2914,9 @@ public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, doub - + -
+
GetMillingStep(int)
@@ -2955,9 +2955,9 @@ public MachiningStep GetMillingStep(int stepIndex)
-
+
-
+
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId)
-
+
-
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
GetStickMachiningToolObservationHeight_mm(int)
@@ -2996,9 +2996,9 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId) - + -
+
GetUniformContourTrayShiftAngle_deg(int)
@@ -3037,9 +3037,9 @@ public double GetUniformContourTrayShiftAngle_deg(int toolId)
-
+
-
+
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
-
+
-
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift)
@@ -3083,9 +3083,9 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li - + -
+
Map(string, FileTimeSection, CycleSamplingMode?)
@@ -3129,9 +3129,9 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
-
+
-
+
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message)
-
+
-
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
Message(string)
@@ -3164,9 +3164,9 @@ public void Message(string message) - + -
+
OptimizeToFiles(string)
@@ -3199,9 +3199,9 @@ public void OptimizeToFiles(string relFileTemplate = "Output/Opt-[NcName]&q
-
+
-
+
Pace()
@@ -3228,9 +3228,9 @@ public void Pace()
-
+
-
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
Pace()
@@ -3228,9 +3228,9 @@ public void Pace() - + -
+
Pause()
@@ -3257,14 +3257,14 @@ public void Pause()
-
+
-
+
PlayAct(IAct, IGetSentence, CancellationToken?)
- PlayAct(IAct, IGetSentence, CancellationToken?)
+
@@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
-
+
-
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
-
+
NcIndirectVariableExpr
@@ -123,8 +123,8 @@ is then
Implements
-
-
+
+
@@ -186,16 +186,16 @@ is then
+
-
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
PlayAct(IAct, IGetSentence, CancellationToken?)
-PlayAct(IAct, IGetSentence, CancellationToken?)
+ @@ -3295,14 +3295,14 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok - + -
+
PlayClTeleport(double, double, double, double, double, double)
- PlayClTeleport(double, double, double, double, double, double)
+
@@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou
-
+
-
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
PlayClTeleport(double, double, double, double, double, double)
+ @@ -3339,9 +3339,9 @@ public void PlayClTeleport(double x, double y, double z, double i, double j, dou - + -
+
PlayCsvFile(string)
@@ -3374,9 +3374,9 @@ public void PlayCsvFile(string relFilePath)
-
+
-
+
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--")
-
+
-
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
PlayNc(string, string)
@@ -3412,9 +3412,9 @@ public void PlayNc(string ncText, string fileNameAlternative = "--") - + -
+
PlayNcFile(string)
@@ -3447,14 +3447,14 @@ public void PlayNcFile(string relNcFilePath)
-
+
-
+
PlayToolingTeleport(int)
-
+
@@ -3481,9 +3481,9 @@ public void PlayToolingTeleport(int toolId)
-
+
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
-
+
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
PlayToolingTeleport(int)
-
+
Preserve()
@@ -3510,9 +3510,9 @@ public void Preserve()
-
+
-
+
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message)
-
+
-
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
ProgressMessage(string)
@@ -3545,9 +3545,9 @@ public void ProgressMessage(string message) - + -
+
ReTrainMillingPara(SampleFlag, string, double)
@@ -3586,9 +3586,9 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double
-
+
-
+
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile)
-
+
-
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
ReadRuntimeGeom(string)
@@ -3621,9 +3621,9 @@ public void ReadRuntimeGeom(string relFile) - + -
+
RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>)
@@ -3668,9 +3668,9 @@ public void RegisterStepVariable(string key, string name, string unit, string fo
-
+
-
+
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece()
-
+
-
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
RemoveFlyPiece()
@@ -3697,9 +3697,9 @@ public void RemoveFlyPiece() - + -
+
Reset()
@@ -3726,9 +3726,9 @@ public void Reset()
-
+
-
+
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime()
-
+
-
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
ResetRuntime()
@@ -3755,9 +3755,9 @@ public void ResetRuntime() - + -
+
RunNc(string, string)
@@ -3799,9 +3799,9 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative
-
+
-
+
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath)
-
+
-
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
RunNcFile(string)
@@ -3840,9 +3840,9 @@ public IEnumerable<Action> RunNcFile(string relNcFilePath) - + -
+
SetNcResolutionFeedPerCycle()
@@ -3868,9 +3868,9 @@ public void SetNcResolutionFeedPerCycle()
-
+
-
+
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth()
-
+
-
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
SetNcResolutionFeedPerTooth()
@@ -3896,9 +3896,9 @@ public void SetNcResolutionFeedPerTooth() - + -
+
SetNcResolutionFixed(double, double)
@@ -3933,9 +3933,9 @@ public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolu
-
+
-
+
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height)
-
+
-
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
SetStickMachiningToolObservationHeight_mm(int, double)
@@ -3971,9 +3971,9 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) - + -
+
SetUniformContourTrayShiftAngle_deg(int, double)
@@ -4009,9 +4009,9 @@ public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
-
+
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm)
-
+
-
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
ShiftDistance_mm(double)
@@ -4049,9 +4049,9 @@ public DistanceShift ShiftDistance_mm(double distanceShift_mm) - + -
+
ShiftTime_s(double)
@@ -4089,9 +4089,9 @@ public TimeShift ShiftTime_s(double seconds)
-
+
-
+
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou
-
+
-
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
TrainMillingPara(SampleFlag, string, double)
@@ -4130,9 +4130,9 @@ public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double ou - + -
+
WarningMessage(string)
@@ -4165,9 +4165,9 @@ public void WarningMessage(string message)
-
+
-
+
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile)
-
+
-
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
WriteRuntimeGeom(string)
@@ -4200,9 +4200,9 @@ public void WriteRuntimeGeom(string relFile) - + -
+
WriteRuntimeGeomToStl(string, double)
@@ -4238,9 +4238,9 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
-
+
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate)
-
+
-
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
WriteShotFiles(double, string)
@@ -4275,9 +4275,9 @@ public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) - + -
+
WriteShotFiles(string, double)
@@ -4313,9 +4313,9 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c
-
+
-
+
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
index 794ea96a..606e7bf7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html
@@ -163,17 +163,6 @@ for each subsequent file so that Previous/Next connect
ProxyProjectService
Delegate (User-based) Project Service.
Apply relative file path from AdminDirectory.
-
-
-
- - RuntimeApi
- Runtime API for machining operations.
-
-
-
- - RuntimeController
- Provides a C# scripting API for controlling and manipulating the milling course.
-Allows for runtime control of milling operations, geometry manipulation, and data analysis.
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+
+
+ - SessionShell
+ End-user-facing facade for a machining session: aggregates session lifecycle,
+NC playback, optimization, geometry I/O, and scripting infrastructure into a
+single delegation surface. Used as the C# script globals object and as the
+concrete target of ISessionCommand implementations.
+
+
+
+ - SessionShellController
+ HTTP controller exposing SessionShell over the web API.
+Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
- Interface IMachiningStepHost | HiAPI-C# 2025
+ Interface IMachiningService | HiAPI-C# 2025
-
+
@@ -84,12 +84,12 @@
WriteStepFiles(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html index 794ea96a..606e7bf7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html @@ -163,17 +163,6 @@ for each subsequent file so thatPrevious/Next connect
Delegate (User-based) Project Service. Apply relative file path from AdminDirectory.
--
-
- RuntimeApi -
Runtime API for machining operations.
-
-
-
-
- RuntimeController -
Provides a C# scripting API for controlling and manipulating the milling course. -Allows for runtime control of milling operations, geometry manipulation, and data analysis.
-
@@ -190,6 +179,20 @@ such as source commands, machining steps, exceptions, and tagged messages.
- SessionProgress
Represents a host for managing milling messages with thread-safe operations and stable index tracking.
+
+ - SessionShell +
End-user-facing facade for a machining session: aggregates session lifecycle, +NC playback, optimization, geometry I/O, and scripting infrastructure into a +single delegation surface. Used as the C# script globals object and as the +concrete target of ISessionCommand implementations.
+
+ - SessionShellController +
HTTP controller exposing SessionShell over the web API. +Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService.
-
+
-
+
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
index 1a805ba5..81917ebc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningStepHost.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html
@@ -2,9 +2,9 @@
-
-Interface IMachiningStepHost
+
+Interface IMachiningService
@@ -102,7 +102,7 @@ Interface IMachiningStepHost
- public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
@@ -153,9 +153,9 @@ Interface IMachiningStepHost
-
+
-
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
-
+
-
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
public interface IMachiningStepHost : IGetMachiningEquipment
+ public interface IMachiningService : IGetMachiningEquipment
+
ClStrip
@@ -185,9 +185,9 @@ Interface IMachiningStepHost
-
+
-
+
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
DictionaryColorGuide
@@ -217,9 +217,9 @@ Interface IMachiningStepHost - + -
+
MachiningEquipment
@@ -249,9 +249,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost
-
+
-
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
MachiningSession
@@ -281,9 +281,9 @@ Interface IMachiningStepHost - + -
+
MachiningToolHouse
@@ -313,9 +313,9 @@ Interface IMachiningStepHost
-
+
-
+
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost
-
+
-
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
MillingStepLuggageReader
@@ -345,9 +345,9 @@ Interface IMachiningStepHost - + -
+
TimeMapping
@@ -377,6 +377,42 @@ Interface IMachiningStepHost
+ Methods
+
+
+
+
+
+
+ GetSessionShell()
+
+
+
+ Returns the session shell that exposes the runtime surface of the active machining session.
+
+
+
+
+ ISessionShell GetSessionShell()
+
+
+
+ Returns
+
+ - ISessionShell
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
index 435d17c3..26514421 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html
@@ -200,8 +200,8 @@ The duration-based step property is based on the duration from previous-step to
-
- MachiningStep(IMachiningStepHost, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
+
+ MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step to
- public MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
- host IMachiningStepHost
+ host IMachiningService
The host of the milling step.
stepIndex int
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
- public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
@@ -2066,7 +2066,7 @@ public double? FrictionPower_W { get; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
index 16bcdc57..b5f4d426 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html
@@ -140,7 +140,7 @@ Interfaces
- - IMachiningStepHost
+ - IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
index 419ea2cf..071a4f3b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html
@@ -950,6 +950,48 @@ The forced item is workpiece.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
+
+
+
+
+ public static MillingForceLuggage NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ Length of each per-rotation list.
+
+
+
+ Returns
+
+ - MillingForceLuggage
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
Returns the session shell that exposes the runtime surface of the active machining session.
+ISessionShell GetSessionShell()
+ + MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[])
@@ -210,12 +210,12 @@ The duration-based step property is based on the duration from previous-step topublic MachiningStep(IMachiningStepHost host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+ public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
-
-
hostIMachiningStepHost
+ hostIMachiningServiceThe host of the milling step.
stepIndexint
@@ -2057,7 +2057,7 @@ public double? FrictionPower_W { get; }
public IMachiningStepHost Host { get; set; }
+ public IMachiningService Host { get; set; }
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html index 16bcdc57..b5f4d426 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html @@ -140,7 +140,7 @@ Interfaces-
-
- IMachiningStepHost +
- IMachiningService
Represents a host interface for milling steps that provides access to milling equipment and related resources.
+ NoCut(int) + +
+ +Builds a luggage representing a physically-computed “no cut” state
+(paired with NoCut(int)): the three
+per-rotation force lists are each filled with Zero
+of length rotationDivisionNum. StepIndex
+is left at default; the caller assigns it.
public static MillingForceLuggage NoCut(int rotationDivisionNum)
+ Parameters
+-
+
rotationDivisionNumint
+ Length of each per-rotation list.
+
+
Returns
+-
+
- MillingForceLuggage + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
index 82887ede..34554504 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html
@@ -1910,6 +1910,51 @@ In multi thread, call it before going to un-safe area.
+
+
+
+ NoCut(int)
+
+
+
+ Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
+
+
+
+
+ public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+
+
+ Parameters
+
+ rotationDivisionNum int
+ The rotation division count this brief reports.
+
+
+
+ Returns
+
+ - MillingPhysicsBrief
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
index 9851059b..ffb5751e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingSteps.MillingInstance.html
@@ -326,7 +326,18 @@ The value is for human viewing.
- Gets or sets the rake face physics brief containing force and other physical calculations.
+ Gets the rake face physics brief containing force and other
+physical calculations. Tri-state contract:
+null — physics not computed
+ (EnablePhysics=false, or no tool, or spindle not
+ rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true).
+ - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true, IsTouched=false);
+ produced via NoCut(int).
+ Use IsTouched to distinguish this from a
+ real cut whose forces happen to be near zero.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
index 9699edbe..ce484ac2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html
@@ -130,7 +130,7 @@ following real Fanuc parameter numbering.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
index c89a2a8b..8b4dda27 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html
@@ -102,7 +102,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
-
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
index 8b671240..37d81707 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html
@@ -98,7 +98,7 @@ Class FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
index 478c47f5..a43ed97d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html
@@ -138,7 +138,7 @@ for the call-frame topic.
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
index 31e025fb..8635bbfc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html
@@ -108,7 +108,7 @@ runtime-state JSON sections:
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
new file mode 100644
index 00000000..894387a0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html
@@ -0,0 +1,450 @@
+
+
+
+
+ Class SubProgramFolderConfig | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramFolderConfig
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Assembly
- HiMech.dll
+
+
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
+
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
+
+
+
+
+
+ public class SubProgramFolderConfig : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramFolderConfig
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramFolderConfig()
+
+
+
+ Initializes a new instance with the default “NC” internal folder and null external folder.
+
+
+
+
+ public SubProgramFolderConfig()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramFolderConfig(XElement)
+
+
+
+ Loads InternalFolder / ExternalFolder
+from XML produced by MakeXmlSource(string, string, bool); either child
+element may be absent.
+
+
+
+
+ public SubProgramFolderConfig(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ ExternalFolder
+
+
+
+ Folder for M198 P_ lookup, modelling Fanuc's “subprogram on
+external storage” semantics. Absolute or relative. Null means
+“fall back to InternalFolder” — a simulator-friendly
+default for projects that don't actually distinguish internal vs
+external storage on disk.
+
+
+
+
+ public string ExternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InternalFolder
+
+
+
+ Folder for M98 P_ lookup. Absolute or relative; relative is
+resolved against the host file's parent directory at use time.
+Null means “use the host file's parent directory directly”.
+Default “NC” mirrors a typical project layout where the main
+program sits beside an NC/ subdirectory of subprograms.
+
+
+
+
+ public string InternalFolder { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
index 92ac0aa2..cfb730d2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html
@@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.
- - NcKinematicsDependency
- Provides IMachineKinematics as an INcDependency
-for SoftNcRunner.NcDependencyList.
+ - SubProgramFolderConfig
+ Folder lookup configuration for
+SubProgramCallSyntax: where to find an
+O<n> file when the host program executes M98 P_ L_
+(InternalFolder) or M198 P_
+(ExternalFolder, modelling Fanuc's external storage call —
+memory card, USB, DNC drive — whose only difference from M98 is the
+search root).
-The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
-the machine tool is loaded or changed after the runner is configured
-(e.g., XML config loaded first, kinematics assigned later).
-
-
-Consumed by G53p1RotaryPositionSyntax,
-IsoG68p2TiltSyntax, and
-McLinearMotionSemantic via
-dependencyList.OfType<IMachineKinematics>().
+Either path may be absolute or relative; when relative, it resolves
+against the host file's parent directory at lookup time. Either may
+be null — a null ExternalFolder falls back to
+InternalFolder; a null InternalFolder
+falls back to the host file's parent directory.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
index ce96bee7..e283de9a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IPowerResettable.html
@@ -171,7 +171,7 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
new file mode 100644
index 00000000..e1125f98
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html
@@ -0,0 +1,409 @@
+
+
+
+
+ Class FileIndexCounterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FileIndexCounterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+
+ public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FileIndexCounterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FileIndexCounterDependency()
+
+
+
+ Initializes a new instance with the counter at 0.
+
+
+
+
+ public FileIndexCounterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Allocate()
+
+
+
+ Returns the next unused file index and post-increments the
+counter. First call after construction or Reset()
+returns 0.
+
+
+
+
+ public int Allocate()
+
+
+
+ Returns
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the live counter value is per-session
+and not meaningful to persist; serialization writes only the
+empty element so the dependency survives an XML round-trip with
+the counter implicitly reset to 0.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset()
+
+
+
+ Rewinds the counter to 0. Called by
+RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that
+initializes a fresh session pipeline so a single brand-preset
+runner can be reused across sessions without leaking file
+indices from the previous session.
+
+
+
+
+ public void Reset()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
similarity index 79%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
index be7fd8c7..111138ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
The actual kinematics instance is resolved at runtime via
-KinematicsProvider. This supports scenarios where
+KinematicsProvider. This supports scenarios where
the machine tool is loaded or changed after the runner is configured
(e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by
+
-
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
Builds a brief representing a physically-computed “no cut” state
+— i.e. EnablePhysics=true but the step has no engagement
+(IsTouched=false). This is semantically distinct from a
+null brief which means “physics was not computed at all”.
+All forces, moments, ratios, chip dimensions and deflections are
+zero; relief-face colliding speed is set to a negative sentinel
+so IsReliefFaceCollided returns false rather
+than null.
public static MillingPhysicsBrief NoCut(int rotationDivisionNum)
+ rotationDivisionNum intThe rotation division count this brief reports.
+Gets or sets the rake face physics brief containing force and other physical calculations.
+Gets the rake face physics brief containing force and other +physical calculations. Tri-state contract:
+null— physics not computed + (EnablePhysics=false, or no tool, or spindle not + rotating).- non-null with computed forces — physics
+ computed on an engaged step (
IsTouched=true). + - non-null with all-zero forces / ratios —
+ physics computed on a no-engagement step
+ (
EnablePhysics=true,IsTouched=false); + produced via NoCut(int). + Use IsTouched to distinguish this from a + real cut whose forces happen to be near zero.
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -128,7 +128,7 @@ long-lived dependency object that owns this data.
- Implements
- - +
Fanuc-side adapter that exposes a wrapped ToolOffsetTable
-as an IVariableLookup following Fanuc Memory C tool offset
+as an IVariableLookup following Fanuc Memory C tool offset
addressing: #2001+N → effective height of offset N
(geometry − wear).
@@ -131,7 +131,7 @@ up immediately in lookups via this adapter.
#5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz.#5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState.#5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz.
Stateless. Configured on
-RuntimeVariableLookups rather than
+RuntimeVariableLookups rather than
NcDependencyList because the read needs the block node for
Previous access — there is no
long-lived dependency object that owns this data.
@@ -118,7 +118,7 @@ long-lived dependency object that owns this data.
- FanucToolOffsetVariableLookup
Fanuc-side adapter that exposes a wrapped ToolOffsetTable -as an IVariableLookup following Fanuc Memory C tool offset +as an IVariableLookup following Fanuc Memory C tool offset addressing:
#2001+N → effective height of offset N(geometry − wear).diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html new file mode 100644 index 00000000..894387a0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html @@ -0,0 +1,450 @@ + + +
+ +Class SubProgramFolderConfig | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + ++ + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html index 92ac0aa2..cfb730d2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html @@ -140,20 +140,20 @@ hardware-faithful alternatives that map to real controller parameters.++ +++++Table of Contents
+ ++ +++ + ++ ++ + + + + ++Class SubProgramFolderConfig +
+ +++ +- Namespace
- Hi.NcParsers.Dependencys.Generic
- Assembly
- HiMech.dll
+ + +Folder lookup configuration for +SubProgramCallSyntax: where to find an +
+O<n>file when the host program executesM98 P_ L_+(InternalFolder) orM198 P_+(ExternalFolder, modelling Fanuc's external storage call — +memory card, USB, DNC drive — whose only difference from M98 is the +search root).+Either path may be absolute or relative; when relative, it resolves +against the host file's parent directory at lookup time. Either may +be null — a null ExternalFolder falls back to +InternalFolder; a null InternalFolder +falls back to the host file's parent directory. +
+++ + + + +
+public class SubProgramFolderConfig : INcDependency, IMakeXmlSource-
+
- Inheritance +
-
+
+ SubProgramFolderConfig+
+
-
+
- Implements +
- + + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Constructors +
+ + + + ++ SubProgramFolderConfig() + +
+ ++ + +Initializes a new instance with the default
+“NC”internal folder and null external folder.++ + + + + + + + + + + + + + + +
+public SubProgramFolderConfig()+ SubProgramFolderConfig(XElement) + +
+ ++ + +Loads InternalFolder / ExternalFolder +from XML produced by MakeXmlSource(string, string, bool); either child +element may be absent.
+++ +
+public SubProgramFolderConfig(XElement src)Parameters
+ + + + + + + + + + + + + +Properties +
+ + + + ++ ExternalFolder + +
+ ++ + +Folder for
+M198 P_lookup, modelling Fanuc's “subprogram on +external storage” semantics. Absolute or relative. Null means +“fall back to InternalFolder” — a simulator-friendly +default for projects that don't actually distinguish internal vs +external storage on disk.++ + + + + +
+public string ExternalFolder { get; set; }Property Value
+-
+
- string + +
+ InternalFolder + +
+ ++ + +Folder for
+M98 P_lookup. Absolute or relative; relative is +resolved against the host file's parent directory at use time. +Null means “use the host file's parent directory directly”. +Default“NC”mirrors a typical project layout where the main +program sits beside anNC/subdirectory of subprograms.++ + + + + +
+public string InternalFolder { get; set; }Property Value
+-
+
- string + +
+ XName + +
+ ++ + +XML element name used to register this dependency with XFactory.
+++ + + + + +
+public static string XName { get; }Property Value
+-
+
- string + +
Methods +
+ + + + ++ MakeXmlSource(string, string, bool) + +
+ ++ + +Creates an XML representation of the object. +This method may also generate additional resources such as related files.
+++ +
+public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)Parameters
+-
+
baseDirectorystring
+ The base directory for resolving relative paths
+
+ relFilestring
+ The relative file path for the XML source
+
+ exhibitionOnlybool
+ if true, the extended file creation is suppressed.
+
+
Returns
+-
+
- XElement +
An XML element representing the object's state
+
+
Remarks
++ + + + + +For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The
+baseDirectoryis typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.++ + ++ ++
-
-
- NcKinematicsDependency -
Provides IMachineKinematics as an INcDependency -for SoftNcRunner.NcDependencyList.
+- SubProgramFolderConfig +
Folder lookup configuration for +SubProgramCallSyntax: where to find an +
O<n>file when the host program executesM98 P_ L_+(InternalFolder) orM198 P_+(ExternalFolder, modelling Fanuc's external storage call — +memory card, USB, DNC drive — whose only difference from M98 is the +search root).-The actual kinematics instance is resolved at runtime via -KinematicsProvider. This supports scenarios where -the machine tool is loaded or changed after the runner is configured -(e.g., XML config loaded first, kinematics assigned later). -
--Consumed by G53p1RotaryPositionSyntax, -IsoG68p2TiltSyntax, and -McLinearMotionSemantic via -
dependencyList.OfType<IMachineKinematics>(). +Either path may be absolute or relative; when relative, it resolves +against the host file's parent directory at lookup time. Either may +be null — a null ExternalFolder falls back to +InternalFolder; a null InternalFolder +falls back to the host file's parent directory.
SyntaxPiece JSON dataflow and is bounded by call
Clears the volatile subset owned by this dependency. Called by
-RuntimeApi.PowerReset() for every IPowerResettable in
+SessionShell.PowerReset() for every IPowerResettable in
the active NcDependencyList.
Table of Contents
+ ++Class FileIndexCounterDependency +
+ +- Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
Per-session monotonically-increasing file index allocator. Holds the +counter as a private field; Allocate() returns the next +unused value and increments. Reset() rewinds to 0 — the +owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls +Reset() on the same edge that initializes a fresh +NcRunnerSessionState, so a controller +power-reset clears both the syntax-piece pipeline and this counter +in lock-step.
++Two consumers share one allocator: +
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one + index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
Lrepetition — distinct indices ensure +(FileIndex, LineIndex)pairs stay unique across overlapping + subprogram line ranges.
public class FileIndexCounterDependency : INcDependency, IMakeXmlSource
+ -
+
- Inheritance +
-
+
+ FileIndexCounterDependency+
+
-
+
- Implements +
- + + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Constructors +
+ + + + ++ FileIndexCounterDependency() + +
+ +Initializes a new instance with the counter at 0.
+public FileIndexCounterDependency()
+ Properties +
+ + + + ++ XName + +
+ +XML element name used to register this dependency with XFactory.
+public static string XName { get; }
+ Property Value
+-
+
- string + +
Methods +
+ + + + ++ Allocate() + +
+ +Returns the next unused file index and post-increments the +counter. First call after construction or Reset() +returns 0.
+public int Allocate()
+ Returns
+-
+
- int + +
+ MakeXmlSource(string, string, bool) + +
+ +Runtime-only dependency — the live counter value is per-session +and not meaningful to persist; serialization writes only the +empty element so the dependency survives an XML round-trip with +the counter implicitly reset to 0.
+public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+ Parameters
+ + +Returns
+-
+
- XElement + +
+ Reset() + +
+ +Rewinds the counter to 0. Called by +RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that +initializes a fresh session pipeline so a single brand-preset +runner can be reused across sessions without leaking file +indices from the previous session.
+public void Reset()
+
+
Class NcKinematicsDependency
- - Namespace
- Hi.NcParsers.Dependencys.Generic
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
@@ -101,7 +101,7 @@ Class NcKinematicsDependency
for SoftNcRunner.NcDependencyList.
- Namespace
- Hi.NcParsers.Dependencys.Generic
- Namespace
- Hi.NcParsers.Dependencys.SystemWired
- Assembly
- HiMech.dll
The actual kinematics instance is resolved at runtime via -KinematicsProvider. This supports scenarios where +KinematicsProvider. This supports scenarios where the machine tool is loaded or changed after the runner is configured (e.g., XML config loaded first, kinematics assigned later).
@@ -199,14 +199,14 @@ Consumed by + -
+
NcKinematicsDependency()
- Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+ Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
@@ -226,14 +226,14 @@ Consumed by
+
-
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
-
+
-
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics.
+
NcKinematicsDependency(Func<IMachineKinematics>)
- Initializes a new instance with the given KinematicsProvider.
+ Initializes a new instance with the given KinematicsProvider.
@@ -263,9 +263,9 @@ Consumed by
+
-
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
-
+
-
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
Initializes a new instance with the given KinematicsProvider.
+Initializes a new instance with the given KinematicsProvider.
+
KinematicsProvider
@@ -296,9 +296,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
XName
@@ -332,9 +332,9 @@ Null provider or null return means kinematics is not yet available. - + -
+
MakeXmlSource(string, string, bool)
@@ -374,7 +374,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -383,9 +383,9 @@ Since the folder can be moving with the configuration file.
-
+
-
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
-
+
-
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
+
McAbcToMat(Vec3d)
@@ -423,9 +423,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher.
-
+
-
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
McToMat(DVec3d)
@@ -462,9 +462,9 @@ the tilt matrix is the transformation matrix from table to attacher. - + -
+
McToPn(DVec3d)
@@ -502,9 +502,9 @@ The Pn is from table buckle to tool attacher.
-
+
-
+
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of the tiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
OrientationToMcAbc(Mat4d, out Vec3d)
@@ -546,9 +546,9 @@ the solution only fit the orientation part of thetiltMat
-
+
-
+
OrientationToMcAbc(Vec3d, out Vec3d)
@@ -596,9 +596,9 @@ likely to converge for tilt configurations such as G68.2 I180 J90 K0
+
-
+
PnToMc(DVec3d, out DVec3d)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
new file mode 100644
index 00000000..514a2b51
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html
@@ -0,0 +1,443 @@
+
+
+
+
+ Class ProjectFolderDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class ProjectFolderDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+
+ public class ProjectFolderDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ ProjectFolderDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ ProjectFolderDependency()
+
+
+
+ Initializes a new instance with no BaseDirectoryProvider; the host assigns one before queries.
+
+
+
+
+ public ProjectFolderDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProjectFolderDependency(Func<string>)
+
+
+
+ Initializes a new instance with the given BaseDirectoryProvider.
+
+
+
+
+ public ProjectFolderDependency(Func<string> provider)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ BaseDirectory
+
+
+
+ The live absolute base directory, or null when
+BaseDirectoryProvider is unset or returns null.
+
+
+
+
+ public string BaseDirectory { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BaseDirectoryProvider
+
+
+
+ Runtime provider for the absolute project base directory.
+Public so cross-assembly hosts (e.g. LocalProjectService
+in HiNc) can wire it after the runner is constructed — same
+host-wired posture as KinematicsProvider.
+Null provider or null return means the host has not configured
+a base directory yet — consumers should treat this as a
+configuration error and surface a diagnostic rather than
+silently falling back.
+
+
+
+
+ public Func<string> BaseDirectoryProvider { get; set; }
+
+
+
+
+
+
+ Property Value
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the BaseDirectoryProvider
+is wired per-host and is not meaningful to persist; serialization
+writes only the empty element so the dependency survives an XML
+round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
new file mode 100644
index 00000000..c4e0a434
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html
@@ -0,0 +1,400 @@
+
+
+
+
+ Class SegmenterDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SegmenterDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+
+ public class SegmenterDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SegmenterDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SegmenterDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries.
+
+
+
+
+ public SegmenterDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SegmenterDependency(Func<ISegmenter>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider.
+
+
+
+
+ public SegmenterDependency(Func<ISegmenter> provider)
+
+
+ Parameters
+
+ provider Func<ISegmenter>
+ Delegate that resolves the live ISegmenter at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Segmenter
+
+
+
+ The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is
+unset or returns null.
+
+
+
+
+ public ISegmenter Segmenter { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ISegmenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
new file mode 100644
index 00000000..e362e20c
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html
@@ -0,0 +1,404 @@
+
+
+
+
+ Class SyntaxPieceLayerDependency | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SyntaxPieceLayerDependency
+
+
+
+ - Namespace
- Hi.NcParsers.Dependencys.SystemWired
+ - Assembly
- HiMech.dll
+
+
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+ public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SyntaxPieceLayerDependency
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SyntaxPieceLayerDependency()
+
+
+
+ Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries.
+
+
+
+
+ public SyntaxPieceLayerDependency()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>>)
+
+
+
+ Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider.
+
+
+
+
+ public SyntaxPieceLayerDependency(Func<List<LazyLinkedList<SyntaxPiece>>> provider)
+
+
+ Parameters
+
+ provider Func<List<LazyLinkedList<SyntaxPiece>>>
+ Delegate that resolves the live layer chain at lookup time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Layers
+
+
+
+ The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is
+unset or returns null. Layer 0 is the source layer; layers 1..N are
+post-NcSyntax layers.
+
+
+
+
+ public List<LazyLinkedList<SyntaxPiece>> Layers { get; }
+
+
+
+
+
+
+ Property Value
+
+ - List<LazyLinkedList<SyntaxPiece>>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this dependency with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired
+per session and is not meaningful to persist; serialization writes only
+the empty element so the dependency survives an XML round-trip.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+
+ Returns
+
+ - XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
new file mode 100644
index 00000000..1f3f634f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html
@@ -0,0 +1,223 @@
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.Dependencys.SystemWired
+
+
+
+
+
+Classes
+
+
+ - FileIndexCounterDependency
+ Per-session monotonically-increasing file index allocator. Holds the
+counter as a private field; Allocate() returns the next
+unused value and increments. Reset() rewinds to 0 — the
+owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls
+Reset() on the same edge that initializes a fresh
+NcRunnerSessionState, so a controller
+power-reset clears both the syntax-piece pipeline and this counter
+in lock-step.
+
+Two consumers share one allocator:
+
- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) allocates one
+ index per top-level NC file that streams through the runner.
- SubProgramCallSyntax allocates a
+ fresh index for each inlined subprogram invocation, including
+ each
L repetition — distinct indices ensure
+ (FileIndex, LineIndex) pairs stay unique across overlapping
+ subprogram line ranges.
+Holding the counter on this dependency rather than on
+NcRunnerSessionState avoids a duplicate
+source-of-truth: the dep is the single seam through which syntaxes
+reach the counter, and there is no third reader that would benefit
+from session-state visibility.
+
+
+
+
+ - NcKinematicsDependency
+ Provides IMachineKinematics as an INcDependency
+for SoftNcRunner.NcDependencyList.
+
+The actual kinematics instance is resolved at runtime via
+KinematicsProvider. This supports scenarios where
+the machine tool is loaded or changed after the runner is configured
+(e.g., XML config loaded first, kinematics assigned later).
+
+
+Consumed by G53p1RotaryPositionSyntax,
+IsoG68p2TiltSyntax, and
+McLinearMotionSemantic via
+dependencyList.OfType<IMachineKinematics>().
+
+
+
+
+ - ProjectFolderDependency
+ Exposes the absolute base directory of the project that owns this
+runner. Resolved at runtime via BaseDirectoryProvider;
+the host (e.g. LocalProjectService, a test harness) wires the
+provider to its known project root after the runner is constructed,
+because SoftNcRunner itself does not retain the
+baseDirectory argument it sees during XML deserialization.
+
+Consumed by syntaxes that need to resolve a project-relative path
+to an absolute file system location — e.g.
+SubProgramCallSyntax for O<n>
+subprogram lookup under
+InternalFolder.
+Reading FilePath is not a substitute: that
+path is relative and resolving it via Path.GetFullPath would
+anchor against the process working directory, not the project root.
+
+
+
+
+ - SegmenterDependency
+ Exposes the active ISegmenter to syntaxes that need to
+re-segment auxiliary NC text mid-pipeline (e.g.,
+SubProgramCallSyntax reading an O<n>
+subprogram file and re-using the host runner's segmenter so the inlined
+blocks are split with the same rules).
+
+The actual segmenter is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to its own Segmenter at the
+start of each session run, so this dependency can sit in
+NcDependencyList without participating in XML
+serialization (see MakeXmlSource(string, string, bool)).
+
+
+
+
+ - SyntaxPieceLayerDependency
+ Exposes the per-session SyntaxPiece layer chain (one
+LazyLinkedList<T> per pipeline stage, owned by
+NcRunnerSessionState) to syntaxes that need
+to inject additional source pieces mid-pipeline — most notably
+SubProgramCallSyntax, which inlines a subprogram
+file's blocks back into layers[0] immediately after the M98 host
+node so the entire syntax pipeline naturally re-processes them.
+
+The actual layer list is resolved at runtime via
+Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)
+wires the provider to the active session's
+SyntaxPieceLayers at
+the start of each call. Index 0 is the source layer (init seed +
+sentence-derived pieces); indices 1..N are post-NcSyntax layers — same
+convention as NcRunnerSessionState.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
index 8ccb62cc..9927097f 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.EvalResult.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html
@@ -84,20 +84,20 @@
+
Struct EvalResult
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -114,7 +114,7 @@ catalogue used by reading / evaluator syntaxes.
- Implements
-
-
+
@@ -179,14 +179,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Outcome of evaluating an NcExpr. Either a successful +
Outcome of evaluating an NcExpr. Either a successful numeric value, or a failure with an error code matching the diagnostic catalogue used by reading / evaluator syntaxes.
- Implements
- - +
+
EvalResult(double?, string, string)
- Outcome of evaluating an NcExpr. Either a successful
+
Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -221,9 +221,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -159,9 +159,9 @@ value is consumed in arithmetic context.
-
+
-
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
Outcome of evaluating an NcExpr. Either a successful +
Outcome of evaluating an NcExpr. Either a successful numeric value, or a failure with an error code matching the diagnostic catalogue used by reading / evaluator syntaxes.
+
ErrorCode
@@ -252,9 +252,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
ErrorMessage
@@ -283,14 +283,14 @@ catalogue used by reading / evaluator syntaxes. - + -
+
IsSuccess
- true when ErrorCode is null.
+ true when ErrorCode is null.
@@ -315,9 +315,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
-
+
-
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
true when ErrorCode is null.
true when ErrorCode is null.
+
Value
@@ -350,9 +350,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
@@ -389,9 +389,9 @@ catalogue used by reading / evaluator syntaxes.
-
+
-
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
Failure(string, string)
@@ -375,7 +375,7 @@ catalogue used by reading / evaluator syntaxes.Returns
-
-
- EvalResult +
- EvalResult
+
Success(double)
@@ -412,7 +412,7 @@ catalogue used by reading / evaluator syntaxes.
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
index 6006892d..6cacc766 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IRuntimeVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html
@@ -84,16 +84,16 @@
+
Interface IRuntimeVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -103,12 +103,12 @@ traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -163,9 +163,9 @@ the evaluator's chain can fall through to the next lookup.
-
+
-
+
Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
similarity index 91%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
index d3c72751..3834d9ba 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html
@@ -84,16 +84,16 @@
+
Interface IVariableLookup
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -107,7 +107,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
+
Get(string)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
new file mode 100644
index 00000000..2a16fb8e
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Class LocalVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class LocalVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+
+ public class LocalVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ LocalVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ LocalMax
+
+
+
+ Inclusive upper bound of the macro-local range (#33).
+
+
+
+
+ public const int LocalMax = 33
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LocalMin
+
+
+
+ Inclusive lower bound of the macro-local range (#1).
+
+
+
+
+ public const int LocalMin = 1
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
index ce098cdf..b46b2449 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html
@@ -84,16 +84,16 @@
Table of Contents
+ ++Class LocalVariableLookup +
+ +- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+Stateless and dependency-free — instances are interchangeable. +
+public class LocalVariableLookup : IRuntimeVariableLookup
+ -
+
- Inheritance +
-
+
+ LocalVariableLookup+
+
-
+
- Implements +
- + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Fields +
+ + + ++ LocalMax + +
+ +Inclusive upper bound of the macro-local range (#33).
public const int LocalMax = 33
+ Field Value
+-
+
- int + +
+ LocalMin + +
+ +Inclusive lower bound of the macro-local range (#1).
public const int LocalMin = 1
+ Field Value
+-
+
- int + +
Methods +
+ + + + ++ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>) + +
+ +Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+ Parameters
+-
+
keystring
+
+ nodeLazyLinkedListNode<SyntaxPiece>
+
+ dependenciesIReadOnlyList<INcDependency>
+
+
Returns
+-
+
- double? + +
+
Class NcBinaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcBinaryExpr
Inheritance
-
+
NcBinaryExpr
@@ -120,8 +120,8 @@ Class NcBinaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcBinaryExpr
-
+
-
+
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExpr
Parameters
- Op NcBinaryOp
+ Op NcBinaryOp
- Left NcExpr
+ Left NcExpr
- Right NcExpr
+ Right NcExpr
@@ -223,9 +223,9 @@ Class NcBinaryExpr
-
+
-
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr)
@@ -200,11 +200,11 @@ Class NcBinaryExprParameters
-
-
OpNcBinaryOp
+ OpNcBinaryOp
- LeftNcExpr
+ LeftNcExpr
- RightNcExpr
+ RightNcExpr
+
Left
@@ -243,7 +243,7 @@ Class NcBinaryExpr
Property Value
@@ -254,9 +254,9 @@ Class NcBinaryExpr
-
+
-
+
Op
@@ -274,7 +274,7 @@ Class NcBinaryExpr
Property Value
- - NcBinaryOp
+ - NcBinaryOp
@@ -285,9 +285,9 @@ Class NcBinaryExpr
-
+
-
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
Op
@@ -274,7 +274,7 @@ Class NcBinaryExprProperty Value
-
-
- NcBinaryOp +
- NcBinaryOp
+
Right
@@ -305,7 +305,7 @@ Class NcBinaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
similarity index 88%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
index 5a1cba75..fdba4523 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcBinaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html
@@ -84,17 +84,17 @@
+
Enum NcBinaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,23 +145,23 @@ Enum NcBinaryOp
Fields
- Add = 0
+ Add = 0
a + b.
- Divide = 3
+ Divide = 3
a / b.
- Mod = 4
+ Mod = 4
a MOD b (truncated remainder, sign of a).
- Multiply = 2
+ Multiply = 2
a * b.
- Subtract = 1
+ Subtract = 1
a - b.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
index 082ce6b8..4cc5a7d3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html
@@ -84,22 +84,22 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Add = 0Add = 0a + b.
Divide = 3Divide = 3a / b.
Mod = 4Mod = 4a MOD b (truncated remainder, sign of a).
Multiply = 2Multiply = 2a * b.
Subtract = 1Subtract = 1a - b.
+
Class NcExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
@@ -121,19 +121,19 @@ is the job of
Implements
-
+
- Derived
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
similarity index 78%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
index cd7e2aab..cbc1dbd6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionEvaluator.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html
@@ -84,30 +84,30 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
AST root for a Fanuc Custom Macro B value expression. Concrete leaves -and combinators sit alongside NcExpressionParser; walking -is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking +is the job of NcExpressionEvaluator.
+
Class NcExpressionEvaluator
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
@@ -187,7 +187,7 @@ operands as
+
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as
+
MathErrorCode
@@ -249,7 +249,7 @@ operands as
+
UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as
+
VacantErrorCode
@@ -314,9 +314,9 @@ operands as
+
-
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
-
+
-
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
ArgumentMismatchCode
@@ -218,7 +218,7 @@ operands as +MathErrorCode
@@ -249,7 +249,7 @@ operands as +UnsupportedFunctionCode
@@ -280,7 +280,7 @@ operands as +VacantErrorCode
@@ -314,9 +314,9 @@ operands as + -
+
Evaluate(NcExpr, IVariableLookup)
@@ -331,15 +331,15 @@ operands as Parameters
- expr NcExpr
+ expr NcExpr
- variables IVariableLookup
+ variables IVariableLookup
Returns
- - EvalResult
+ - EvalResult
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
similarity index 90%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
index 4626beb0..76facef2 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcExpressionParser.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html
@@ -84,21 +84,21 @@
expr NcExprexpr NcExprvariables IVariableLookupvariables IVariableLookup
+
Class NcExpressionParser
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Recursive-descent parser for Fanuc Custom Macro B value expressions. -Pure: takes a string, produces an NcExpr AST. Performs no +Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -194,9 +194,9 @@ rejects with an arity error.
-
+
-
+
TryParse(string, out NcExpr, out string)
@@ -216,7 +216,7 @@ describes the syntax problem.
source string
- expr NcExpr
+ expr NcExpr
error string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
index 0af416eb..e68eff60 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcFunctionExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html
@@ -84,16 +84,16 @@
+
Class NcFunctionExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcFunctionExpr
Inheritance
-
+
NcFunctionExpr
@@ -120,8 +120,8 @@ Class NcFunctionExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcFunctionExpr
-
+
-
+
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExpr
Name string
- Args IReadOnlyList<NcExpr>
+ Args IReadOnlyList<NcExpr>
@@ -221,9 +221,9 @@ Class NcFunctionExpr
-
+
-
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
NcFunctionExpr(string, IReadOnlyList<NcExpr>)
@@ -202,7 +202,7 @@ Class NcFunctionExprNamestring
- ArgsIReadOnlyList<NcExpr>
+ ArgsIReadOnlyList<NcExpr>
+
Args
@@ -241,7 +241,7 @@ Class NcFunctionExpr
Property Value
@@ -252,9 +252,9 @@ Class NcFunctionExpr
-
+
-
+
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
index adcd6f68..018997f6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html
@@ -84,22 +84,22 @@
Name
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html similarity index 80% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html index adcd6f68..018997f6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcIndirectVariableExpr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html @@ -84,22 +84,22 @@
+
Class NcIndirectVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -115,7 +115,7 @@ is then object
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
+
NcIndirectVariableExpr(string, NcExpr)
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
@@ -208,7 +208,7 @@ is then
Prefix string
- Index NcExpr
+ Index NcExpr
@@ -227,9 +227,9 @@ is then
+
-
+
Index
@@ -247,7 +247,7 @@ is then Property Value
@@ -258,9 +258,9 @@ is then
+
-
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
Prefix stringIndex NcExprIndex NcExprIndex
@@ -247,7 +247,7 @@ is then Property Value @@ -258,9 +258,9 @@ is then + -
+
Prefix
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
similarity index 87%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
index 97f0d7d5..6867ff8b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcLiteralExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html
@@ -84,16 +84,16 @@
+
Class NcLiteralExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcLiteralExpr
Inheritance
-
+
NcLiteralExpr
@@ -120,8 +120,8 @@ Class NcLiteralExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcLiteralExpr
-
+
-
+
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr
-
+
-
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
NcLiteralExpr(double)
@@ -219,9 +219,9 @@ Class NcLiteralExpr - + -
+
Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
index d6922ef3..5f91e2a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html
@@ -84,16 +84,16 @@
+
Class NcUnaryExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -112,7 +112,7 @@ Class NcUnaryExpr
Inheritance
-
+
NcUnaryExpr
@@ -120,8 +120,8 @@ Class NcUnaryExpr
- Implements
-
-
-
+
+
@@ -183,9 +183,9 @@ Class NcUnaryExpr
-
+
-
+
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExpr
Parameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr
-
+
-
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
NcUnaryExpr(NcUnaryOp, NcExpr)
@@ -200,9 +200,9 @@ Class NcUnaryExprParameters
@@ -221,9 +221,9 @@ Class NcUnaryExpr - + -
+
Op
@@ -241,7 +241,7 @@ Class NcUnaryExpr
Property Value
@@ -252,9 +252,9 @@ Class NcUnaryExpr
-
+
-
+
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExpr
Property Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
similarity index 92%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
index c760bce4..7b7760ae 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html
@@ -84,17 +84,17 @@
Operand
@@ -272,7 +272,7 @@ Class NcUnaryExprProperty Value
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html similarity index 92% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html index c760bce4..7b7760ae 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcUnaryOp.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html @@ -84,17 +84,17 @@
+
Enum NcUnaryOp
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
@@ -145,11 +145,11 @@ Enum NcUnaryOp
Fields
- Minus = 1
+ Minus = 1
Negation: -expr.
- Plus = 0
+ Plus = 0
Identity: +expr.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
index eb9f8aea..e1da93cb 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.NcVariableExpr.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html
@@ -84,21 +84,21 @@
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Minus = 1Minus = 1Negation: -expr.
Plus = 0Plus = 0Identity: +expr.
+
Class NcVariableExpr
- - Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -113,7 +113,7 @@ Class NcVariableExpr
Inheritance
-
+
NcVariableExpr
@@ -121,8 +121,8 @@ Class NcVariableExpr
- Implements
-
-
-
+
+
@@ -184,15 +184,15 @@ Class NcVariableExpr
-
+
-
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
- - NcBinaryExpr
+ - LocalVariableLookup
+ Reads Fanuc-style local macro variables (#1-#33) from
+Vars.Local on the current SyntaxPiece JSON,
+walking Previous until the entry
+is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+
+
+
+
+ - NcBinaryExpr
Binary arithmetic on two operands (+ - * / or MOD).
- - NcExpr
+ - NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves
-and combinators sit alongside NcExpressionParser; walking
-is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking
+is the job of NcExpressionEvaluator.
- - NcExpressionEvaluator
- Walks an NcExpr AST and produces an EvalResult.
-Resolves #nnn via an IVariableLookup; built-in function
+
- NcExpressionEvaluator
+ Walks an NcExpr AST and produces an EvalResult.
+Resolves #nnn via an IVariableLookup; built-in function
names are matched case-insensitively against a fixed table.
Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN
EXP POW. Trigonometric arguments and results are in degrees, matching
Fanuc Custom Macro B convention. Unknown function names surface as
-UnsupportedFunctionCode; arity mismatches as
-ArgumentMismatchCode; division / MOD by zero and domain
-errors (e.g. SQRT[-1]) as MathErrorCode; vacant
-operands as VacantErrorCode.
+UnsupportedFunctionCode; arity mismatches as
+ArgumentMismatchCode; division / MOD by zero and domain
+errors (e.g. SQRT[-1]) as MathErrorCode; vacant
+operands as VacantErrorCode.
- - NcExpressionParser
+ - NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions.
-Pure: takes a string, produces an NcExpr AST. Performs no
+Pure: takes a string, produces an NcExpr AST. Performs no
variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)*
@@ -147,40 +160,56 @@ rejects with an arity error.
- - NcFunctionExpr
+ - NcFunctionExpr
Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b].
- - NcIndirectVariableExpr
+ - NcIndirectVariableExpr
Indirect variable reference #[expr]. The inner expression is
evaluated and truncated toward zero to obtain an integer; the lookup key
-is then Prefix concatenated with that integer
+is then Prefix concatenated with that integer
(e.g. Prefix="#", computed 124 → "#124").
- - NcLiteralExpr
+ - NcLiteralExpr
Numeric literal (e.g. 1.5, 15., .5, 1e-3).
- - NcUnaryExpr
+ - NcUnaryExpr
Unary + or - applied to an operand.
- - NcVariableExpr
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ - NcVariableExpr
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
+
+
+ - VolatileVariableLookup
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
Structs
- - EvalResult
- Outcome of evaluating an NcExpr. Either a successful
+
- EvalResult
+ Outcome of evaluating an NcExpr. Either a successful
numeric value, or a failure with an error code matching the diagnostic
catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- - IRuntimeVariableLookup
+ - IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the
current SyntaxPiece node (for Previous
traceback into runtime-state sections like MachineCoordinateState
/ ProgramXyz) and the dependency list (so the lookup can read
from sibling dependencies without holding a static reference).
-Distinguished from IVariableLookup: that one is for
+Distinguished from IVariableLookup: that one is for
long-lived dependencies that already hold their own data (parameter
tables, tool-offset wrappers, retained-variable tables) and need no
block context. IRuntimeVariableLookup is for context-sensitive
resolutions configured declaratively on
-RuntimeVariableLookups.
+RuntimeVariableLookups.
Implementations should be brand-specific (e.g. Fanuc #5001-#5043
@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.
- - IVariableLookup
+ - IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value,
or null for vacant (Fanuc <vacant>) and out-of-scope alike.
@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each
in priority order until one returns a non-null value.
-A returned null is treated by NcExpressionEvaluator
+A returned null is treated by NcExpressionEvaluator
as vacant and surfaces as a Variable--Vacant failure when the
value is consumed in arithmetic context.
@@ -232,12 +261,12 @@ value is consumed in arithmetic context.
Enums
- - NcBinaryOp
+ - NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
new file mode 100644
index 00000000..f9144b82
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html
@@ -0,0 +1,569 @@
+
+
+
+
+ Class FanucSystemControlVariableSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucSystemControlVariableSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+
+ public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucSystemControlVariableSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax()
+
+
+
+ Default constructor.
+
+
+
+
+ public FanucSystemControlVariableSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FanucSystemControlVariableSyntax(XElement)
+
+
+
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
+
+
+
+ public FanucSystemControlVariableSyntax(XElement src)
+
+
+ Parameters
+
+ src XElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ SystemControlMax
+
+
+
+ Inclusive upper bound of the system-control range (#3999).
+
+
+
+
+ public const int SystemControlMax = 3999
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControlMin
+
+
+
+ Inclusive lower bound of the system-control range (#3000).
+
+
+
+
+ public const int SystemControlMin = 3000
+
+
+
+
+
+ Field Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedDiagId
+
+
+
+ Diagnostic id emitted for every consumed #3000-#3999
+assignment — recognised by the parser, ignored by simulation.
+
+
+
+
+ public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
index 49f12c2f..bab1eea6 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
+truth for retained values, and VariableEvaluatorSyntax reads
from the table directly. The hincproj round-trip preserves writes across
project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
@@ -206,9 +206,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
- Namespace
- Hi.NcParsers.LogicSyntaxs.Evaluation
- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
- Implements
- - - + +
+
NcVariableExpr(string)
- Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
+ Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
@@ -221,9 +221,9 @@ Class NcVariableExpr
-
+
-
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
-
+
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@
Classes
Direct variable reference; Key is the raw source token
-(e.g. "#124") passed verbatim to Get(string).
Direct variable reference; Key is the raw source token
+(e.g. "#124") passed verbatim to Get(string).
+
Key
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
new file mode 100644
index 00000000..0275ea9d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html
@@ -0,0 +1,266 @@
+
+
+
+
+ Class VolatileVariableLookup | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class VolatileVariableLookup
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
+ - Assembly
- HiMech.dll
+
+
+ Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+
+Stateless and dependency-free — instances are interchangeable.
+Reads use the same dict-merge carry that
+VolatileVariableReadingSyntax writes; the two stay
+decoupled (read side here; write side in the reader).
+
+
+
+
+
+ public class VolatileVariableLookup : IRuntimeVariableLookup
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ VolatileVariableLookup
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)
+
+
+
+ Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
+
+
+
+
+ public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+
+ Parameters
+
+ key string
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+ dependencies IReadOnlyList<INcDependency>
+
+
+
+ Returns
+
+ - double?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
similarity index 58%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
index 356701a7..c1f4e970 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Evaluation.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html
@@ -2,9 +2,9 @@
- Namespace Hi.NcParsers.LogicSyntaxs.Evaluation | HiAPI-C# 2025
+ Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025
-
+
@@ -84,9 +84,9 @@
Table of Contents
+ ++Class VolatileVariableLookup +
+ +- Namespace
- Hi.NcParsers.EvaluationSyntaxs.Evaluation
- Assembly
- HiMech.dll
Reads Fanuc-style non-retained common variables (#100-#499)
+from Vars.Volatile on the current SyntaxPiece
+JSON, walking Previous until the
+entry is found. Self-gates the id range so the evaluator's
+RuntimeVariableLookups chain can
+fall through to the next lookup for out-of-range keys.
+Stateless and dependency-free — instances are interchangeable. +Reads use the same dict-merge carry that +VolatileVariableReadingSyntax writes; the two stay +decoupled (read side here; write side in the reader). +
+public class VolatileVariableLookup : IRuntimeVariableLookup
+ -
+
- Inheritance +
-
+
+ VolatileVariableLookup+
+
-
+
- Implements +
- + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Methods +
+ + + + ++ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>) + +
+ +Returns the value of the variable identified by key
+in the context of node and
+dependencies, or null if the key is outside
+this lookup's range or the value is vacant.
public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+ Parameters
+-
+
keystring
+
+ nodeLazyLinkedListNode<SyntaxPiece>
+
+ dependenciesIReadOnlyList<INcDependency>
+
+
Returns
+-
+
- double? + +
Namespace Hi.NcParsers.LogicSyntaxs.Evaluation
+Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation
@@ -95,37 +95,50 @@ Classes-
-
- NcBinaryExpr +
- LocalVariableLookup +
Reads Fanuc-style local macro variables (
+#1-#33) from +Vars.Localon the current SyntaxPiece JSON, +walking Previous until the entry +is found. Self-gates the id range so the evaluator's +RuntimeVariableLookups chain can +fall through to the next lookup for out-of-range keys.+Stateless and dependency-free — instances are interchangeable. +
+
+
-
+
- NcBinaryExpr
Binary arithmetic on two operands (
+ - * /orMOD).
-
-
- NcExpr +
- NcExpr
AST root for a Fanuc Custom Macro B value expression. Concrete leaves -and combinators sit alongside NcExpressionParser; walking -is the job of NcExpressionEvaluator.
+and combinators sit alongside NcExpressionParser; walking +is the job of NcExpressionEvaluator.
-
-
- NcExpressionEvaluator -
Walks an NcExpr AST and produces an EvalResult. -Resolves
#nnnvia an IVariableLookup; built-in function +- NcExpressionEvaluator +
Walks an NcExpr AST and produces an EvalResult. +Resolves
#nnnvia an IVariableLookup; built-in function names are matched case-insensitively against a fixed table.Phase-1 supports:
SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN EXP POW. Trigonometric arguments and results are in degrees, matching Fanuc Custom Macro B convention. Unknown function names surface as -UnsupportedFunctionCode; arity mismatches as -ArgumentMismatchCode; division / MOD by zero and domain -errors (e.g.SQRT[-1]) as MathErrorCode; vacant -operands as VacantErrorCode. +UnsupportedFunctionCode; arity mismatches as +ArgumentMismatchCode; division / MOD by zero and domain +errors (e.g.SQRT[-1]) as MathErrorCode; vacant +operands as VacantErrorCode.
-
-
- NcExpressionParser +
- NcExpressionParser
Recursive-descent parser for Fanuc Custom Macro B value expressions. -Pure: takes a string, produces an NcExpr AST. Performs no +Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation.
Grammar (highest precedence last):
expr := term (('+' | '-') term)* @@ -147,40 +160,56 @@ rejects with an arity error.
-
-
- NcFunctionExpr +
- NcFunctionExpr
Built-in function call like
SIN[x],SQRT[x],ATAN[a]/[b].
-
-
- NcIndirectVariableExpr +
- NcIndirectVariableExpr
Indirect variable reference
#[expr]. The inner expression is evaluated and truncated toward zero to obtain an integer; the lookup key -is then Prefix concatenated with that integer +is then Prefix concatenated with that integer (e.g.Prefix="#", computed124→"#124").
-
-
- NcLiteralExpr +
- NcLiteralExpr
Numeric literal (e.g.
1.5,15.,.5,1e-3).
-
-
- NcUnaryExpr +
- NcUnaryExpr
Unary
+or-applied to an operand.
-
-
- NcVariableExpr -
Direct variable reference; Key is the raw source token -(e.g.
+"#124") passed verbatim to Get(string).- NcVariableExpr +
Direct variable reference; Key is the raw source token +(e.g.
+"#124") passed verbatim to Get(string).
+
-
+
- VolatileVariableLookup +
Reads Fanuc-style non-retained common variables (
+#100-#499) +fromVars.Volatileon the current SyntaxPiece +JSON, walking Previous until the +entry is found. Self-gates the id range so the evaluator's +RuntimeVariableLookups chain can +fall through to the next lookup for out-of-range keys.+Stateless and dependency-free — instances are interchangeable. +Reads use the same dict-merge carry that +VolatileVariableReadingSyntax writes; the two stay +decoupled (read side here; write side in the reader). +
Structs
-
-
- EvalResult -
Outcome of evaluating an NcExpr. Either a successful +
- EvalResult +
Outcome of evaluating an NcExpr. Either a successful numeric value, or a failure with an error code matching the diagnostic catalogue used by reading / evaluator syntaxes.
@@ -189,19 +218,19 @@ catalogue used by reading / evaluator syntaxes.
Interfaces
- IRuntimeVariableLookup +
- IRuntimeVariableLookup
Stateless variable lookup that needs per-block runtime context — the current SyntaxPiece node (for Previous traceback into runtime-state sections like
MachineCoordinateState/ProgramXyz) and the dependency list (so the lookup can read from sibling dependencies without holding a static reference).-Distinguished from IVariableLookup: that one is for +Distinguished from IVariableLookup: that one is for long-lived dependencies that already hold their own data (parameter tables, tool-offset wrappers, retained-variable tables) and need no block context.
IRuntimeVariableLookupis for context-sensitive resolutions configured declaratively on -RuntimeVariableLookups. +RuntimeVariableLookups.Implementations should be brand-specific (e.g. Fanuc
#5001-#5043@@ -211,7 +240,7 @@ the evaluator's chain can fall through to the next lookup.- IVariableLookup +
- IVariableLookup
Resolves a Custom Macro B variable reference to its current numeric value, or
nullfor vacant (Fanuc<vacant>) and out-of-scope alike.@@ -222,7 +251,7 @@ and parse the prefix locally; chain them at the call site by trying each in priority order until one returns a non-
nullvalue.-A returned
@@ -232,12 +261,12 @@ value is consumed in arithmetic context. Enumsnullis treated by NcExpressionEvaluator +A returnednullis treated by NcExpressionEvaluator as vacant and surfaces as aVariable--Vacantfailure when the value is consumed in arithmetic context.-
-
- NcBinaryOp +
- NcBinaryOp
Binary operators allowed in Fanuc Custom Macro B value expressions.
Class FanucSystemControlVariableSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + ++ + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html similarity index 80% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html index 49f12c2f..bab1eea6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RetainedCommonVariableReadingSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html @@ -84,16 +84,16 @@++ +++++Table of Contents
+ ++ +++ + ++ ++ + + + + ++Class FanucSystemControlVariableSyntax +
+ +++ +- Namespace
- Hi.NcParsers.EvaluationSyntaxs
- Assembly
- HiMech.dll
+ + +Consumes Fanuc-style system-control variable assignments +(
+#3000-#3999) — alarm trigger (#3000), millisecond and +hour clocks (#3001/#3002), single-block / feed-hold +bypass flags (#3003/#3004), pause-with-message +(#3006), mirror-image flags (#3007), date / time +(#3011/#3012), tool-life data (#3030/ +#3032), etc.+Every id in this range is a controller-side state variable — its +authoritative value lives on the real hardware (RTC, alarm bus, +override switches, …) and an NC write at most triggers a side effect +(clock reset, alarm raise, message-pause prompt). Offline simulation +has none of that machinery, so this syntax does not emulate the +effect. Instead it: +
+- records the literal write on the block JSON under
+
Vars.SystemControl(round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported+UnsupportedMessage(Sentence, string, string, object) +so the user knows the assignment was recognised but its controller-side +effect is not simulated. Message-severity (not Warning) because these +writes are safe no-ops offline — every consumed assignment would emit +a Warning per block, which would be noisy without signalling anything +the user must act on; - removes the entry from
Parsing.Assignmentsso it does not +re-surface as a genericParsing--Unconsumeddiagnostic.
+The dictionary carries forward block-by-block (same dict-merge pattern +as VolatileVariableReadingSyntax) so a downstream consumer +can read the most recent recorded value via
+SyntaxPiecelinkage. ++Only literal numeric RHS values are consumed; non-literal RHS +(e.g.
+#3002 = #500) is left inParsing.Assignmentsfor +VariableEvaluatorSyntax to resolve, mirroring the +retained / volatile reading syntaxes. ++Fanuc-family only — Siemens uses named system variables +(
+$AC_TIME,$A_DAY, …) and Heidenhain uses +FN18: SYSREAD; neither flows throughParsing.Assignments.#nnn. +++ + + + +
+public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource-
+
- Inheritance +
-
+
+ FanucSystemControlVariableSyntax+
+
-
+
- Implements +
- + + + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Constructors +
+ + + + ++ FanucSystemControlVariableSyntax() + +
+ ++ + +Default constructor.
+++ + + + + + + + + + + + + + + +
+public FanucSystemControlVariableSyntax()+ FanucSystemControlVariableSyntax(XElement) + +
+ ++ + +Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+++ +
+public FanucSystemControlVariableSyntax(XElement src)Parameters
+-
+
srcXElement
+
+
Fields +
+ + + ++ SystemControlMax + +
+ ++ + +Inclusive upper bound of the system-control range (
+#3999).++ + + + +
+public const int SystemControlMax = 3999Field Value
+-
+
- int + +
+ SystemControlMin + +
+ ++ + +Inclusive lower bound of the system-control range (
+#3000).++ + + + +
+public const int SystemControlMin = 3000Field Value
+-
+
- int + +
+ UnsupportedDiagId + +
+ ++ + +Diagnostic id emitted for every consumed
+#3000-#3999+assignment — recognised by the parser, ignored by simulation.++ + + + +
+public const string UnsupportedDiagId = "FanucSystemControl--Unsupported"Field Value
+-
+
- string + +
Properties +
+ + + + ++ Name + +
+ ++ + +Syntax kind name (typically the concrete type name).
+++ + + + + +
+public string Name { get; }Property Value
+-
+
- string + +
+ XName + +
+ ++ + +XML element name for Regs registration.
+++ + + + + +
+public static string XName { get; }Property Value
+-
+
- string + +
Methods +
+ + + + ++ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +
+ ++ + +Build syntax arrangement into the +
+syntaxPieceNodein-place.++ +
+public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)Parameters
+-
+
syntaxPieceNodeLazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyListList<INcDependency>
+
+ ncDiagnosticProgressNcDiagnosticProgress
+
+
+ MakeXmlSource(string, string, bool) + +
+ ++ + +Creates an XML representation of the object. +This method may also generate additional resources such as related files.
+++ +
+public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)Parameters
+-
+
baseDirectorystring
+ The base directory for resolving relative paths
+
+ relFilestring
+ The relative file path for the XML source
+
+ exhibitionOnlybool
+ if true, the extended file creation is suppressed.
+
+
Returns
+-
+
- XElement +
An XML element representing the object's state
+
+
Remarks
++ + + + + +For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The
+baseDirectoryis typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.++ + ++ ++
-
-
-
-
+
Class RetainedCommonVariableReadingSyntax
@@ -103,14 +103,14 @@ and writing them straight to a registered
RetainedCommonVariableTable.
No SyntaxPiece JSON mirror is created — the table is the single source of -truth for retained values, and VariableEvaluatorSyntax reads +truth for retained values, and VariableEvaluatorSyntax reads from the table directly. The hincproj round-trip preserves writes across project sessions.
Only literal numeric RHS values are consumed by this syntax
(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result through the same table. The two
syntaxes are decoupled.
NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax()
@@ -233,14 +233,14 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,9 +269,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
RetainedCommonVariableReadingSyntax(XElement)
-Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
NcDependencyList, this syntax is a no-op.
-
+
-
+
Name
@@ -301,9 +301,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
XName
@@ -337,9 +337,9 @@ runner'sNcDependencyList, this syntax is a no-op.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -374,9 +374,9 @@ runner's NcDependencyList, this syntax is a no-op.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
new file mode 100644
index 00000000..c9f699d0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html
@@ -0,0 +1,474 @@
+
+
+
+
+ Class SubProgramCallSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCallSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+
+ public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCallSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramCallSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramCallSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramCallSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramCallSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
new file mode 100644
index 00000000..2d608faf
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html
@@ -0,0 +1,466 @@
+
+
+
+
+ Class SubProgramReturnSyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturnSyntax
+
+
+
+ - Namespace
- Hi.NcParsers.EvaluationSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+
+ public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturnSyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ SubProgramReturnSyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public SubProgramReturnSyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubProgramReturnSyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public SubProgramReturnSyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name used to register this syntax with XFactory.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
similarity index 55%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
index 165acb18..45a782a3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VariableEvaluatorSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html
@@ -6,7 +6,7 @@
-
+
@@ -84,54 +84,84 @@
-
+
-
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -416,7 +416,7 @@ This method may also generate additional resources such as related files. -Remarks
+Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
Table of Contents
+ ++Class SubProgramCallSyntax +
+ +- Namespace
- Hi.NcParsers.EvaluationSyntaxs
- Assembly
- HiMech.dll
Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ -
+
- Inheritance +
-
+
+ SubProgramCallSyntax+
+
-
+
- Implements +
- + + + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Constructors +
+ + + + ++ SubProgramCallSyntax() + +
+ +Parameterless instance for bundle composition (no XML state).
+public SubProgramCallSyntax()
+ + SubProgramCallSyntax(XElement) + +
+ +XML ctor (no child elements; reserved for forward compatibility).
+public SubProgramCallSyntax(XElement src)
+ Parameters
+ + + + + + + + + + + + + +Properties +
+ + + + ++ Name + +
+ +Syntax kind name (typically the concrete type name).
+public string Name { get; }
+ Property Value
+-
+
- string + +
+ XName + +
+ +XML element name used to register this syntax with XFactory.
+public static string XName { get; }
+ Property Value
+-
+
- string + +
Methods +
+ + + + ++ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +
+ +Build syntax arrangement into the
+syntaxPieceNode in-place.
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+ Parameters
+-
+
syntaxPieceNodeLazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyListList<INcDependency>
+
+ ncDiagnosticProgressNcDiagnosticProgress
+
+
+ MakeXmlSource(string, string, bool) + +
+ +Creates an XML representation of the object. +This method may also generate additional resources such as related files.
+public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+ Parameters
+-
+
baseDirectorystring
+ The base directory for resolving relative paths
+
+ relFilestring
+ The relative file path for the XML source
+
+ exhibitionOnlybool
+ if true, the extended file creation is suppressed.
+
+
Returns
+-
+
- XElement +
An XML element representing the object's state
+
+
Remarks
+For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
Table of Contents
+ ++Class SubProgramReturnSyntax +
+ +- Namespace
- Hi.NcParsers.EvaluationSyntaxs
- Assembly
- HiMech.dll
Consumes Fanuc-style M99 subprogram-return blocks.
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ -
+
- Inheritance +
-
+
+ SubProgramReturnSyntax+
+
-
+
- Implements +
- + + + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Constructors +
+ + + + ++ SubProgramReturnSyntax() + +
+ +Parameterless instance for bundle composition (no XML state).
+public SubProgramReturnSyntax()
+ + SubProgramReturnSyntax(XElement) + +
+ +XML ctor (no child elements; reserved for forward compatibility).
+public SubProgramReturnSyntax(XElement src)
+ Parameters
+ + + + + + + + + + + + + +Properties +
+ + + + ++ Name + +
+ +Syntax kind name (typically the concrete type name).
+public string Name { get; }
+ Property Value
+-
+
- string + +
+ XName + +
+ +XML element name used to register this syntax with XFactory.
+public static string XName { get; }
+ Property Value
+-
+
- string + +
Methods +
+ + + + ++ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +
+ +Build syntax arrangement into the
+syntaxPieceNode in-place.
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+ Parameters
+-
+
syntaxPieceNodeLazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyListList<INcDependency>
+
+ ncDiagnosticProgressNcDiagnosticProgress
+
+
+ MakeXmlSource(string, string, bool) + +
+ +Creates an XML representation of the object. +This method may also generate additional resources such as related files.
+public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+ Parameters
+-
+
baseDirectorystring
+ The base directory for resolving relative paths
+
+ relFilestring
+ The relative file path for the XML source
+
+ exhibitionOnlybool
+ if true, the extended file creation is suppressed.
+
+
Returns
+-
+
- XElement +
An XML element representing the object's state
+
+
Remarks
+For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
Class VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
+Assignments normalize — Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
-
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
+Parsing tree substitution — every string-typed value reachable
+from Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
VariableExpression--Unevaluated only if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
@@ -221,9 +251,9 @@ register an
+
-
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Resolves Custom Macro B variable references and bracket expressions on -a single block by walking the parser-stage residue and replacing each -reference with its evaluated numeric value.
+Pure expression normalizer for Custom Macro B syntax. Walks the +parser-stage residue on a single block and inlines numeric values +wherever a Fanuc-style variable reference or bracket expression +appears — but does not write to any specific store. Routing +“where the resolved literal lands” stays in the brand-specific +reader syntaxes (VolatileVariableReadingSyntax, +RetainedCommonVariableTable's reader, +FanucSystemControlVariableSyntax, …) which run +after this syntax on the same block.
Two passes per block:
-
-
Parsing.Assignments.#nnnentries with a non-literal RHS are -evaluated in iteration order. Successful results are written to -Vars.Volatilefor#100-#499or to the registered -RetainedCommonVariableTablefor#500-#999, and the -entry is removed. Iteration order matters: an earlier RHS may set a -variable that a later RHS reads. Failures (vacant operand, unsupported -function, parse error) emit aVariableExpression--Unevaluated-error and leave the entry in place; out-of-range ids are likewise left -in place. +Assignments normalize —Parsing.Assignments.#nnnentries +whose RHS is non-literal (e.g."#500+1","SQRT[#100]") +are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is +replaced with the resolved literal (round-trip-safe +"R"-format). The entry stays inParsing.Assignmentsso +downstream reader syntaxes consume it as a pure-literal assignment. +Iteration follows source order (Parsing.Assignments insertion order). -
-Every string-typed value reachable from
Parsing.<tag>-(axis tags, canned-cycle sub-objects likeParsing.G81, -Parsing.G54.1, etc.) is parsed; on a successful evaluation the -string is replaced with a numeric JsonValue. Failures -silently leave the original string and rely on downstream +Parsing tree substitution — every string-typed value reachable +fromParsing.<tag>(axis tags, canned-cycle sub-objects) +is parsed; on a successful evaluation the string is replaced with a +numeric JsonValue. Failures silently leave the original +string and rely on downstream GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surfaceVariableExpression--Unevaluatedonly if the tag is actually read.
-Lookup chain (first non-null wins):
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
- Block-local
Vars.Localwith Previous traceback (#1-#33). - Block-local
Vars.Volatilewith traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g.RetainedCommonVariableTable,FanucParameterTable,FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literalis visible to a later +RHS that mentions#nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33), +VolatileVariableLookup (#100-#499), +FanucPositionVariableLookup +(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order +(RetainedCommonVariableTable, +FanucParameterTable, +FanucToolOffsetVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are -not hard-coded inside this syntax. Adding a new variable surface -(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive: -register an IVariableLookup on a dependency or push an -IRuntimeVariableLookup onto the per-preset list. +Each lookup self-gates its id range; the evaluator stays brand- and +range-agnostic. Adding a new variable surface is additive: register +an IVariableLookup on a dependency or push an +IRuntimeVariableLookup onto the per-preset list. +
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
VariableEvaluatorSyntax()
@@ -248,14 +278,14 @@ register an
+
-
+
VariableEvaluatorSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -284,9 +314,9 @@ register an
+
-
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
VariableEvaluatorSyntax(XElement)
-Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+
Name
@@ -316,16 +346,19 @@ register an
+
-
+
RuntimeVariableLookups
- Per-preset list of context-sensitive lookups (typically position
-reads that need Previous). Walked
-in list order after all dependency-bound IVariableLookups.
+ Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
@@ -339,7 +372,7 @@ in list order after all dependency-bound Property Value
@@ -350,9 +383,9 @@ in list order after all dependency-bound
+
-
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
RuntimeVariableLookups
-Per-preset list of context-sensitive lookups (typically position -reads that need Previous). Walked -in list order after all dependency-bound IVariableLookups.
+Per-preset list of context-sensitive lookups (block-local
+Vars.Local / Vars.Volatile, position reads,
+runtime-state reads). Walked in list order, before the
+dependency-bound IVariableLookups. Brand presets
+configure this — instances are not XML-serialised because they
+are brand-determined behaviour, not project state.
+
XName
@@ -386,9 +419,9 @@ in list order after all dependency-bound
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound
+
-
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -423,9 +456,9 @@ in list order after all dependency-bound + -
+
MakeXmlSource(string, string, bool)
@@ -465,7 +498,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
similarity index 76%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
index 50301f00..1a6efc8c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.VolatileVariableReadingSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html
@@ -84,16 +84,16 @@
-
+
-
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
+
Class VolatileVariableReadingSyntax
@@ -111,7 +111,7 @@ abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
Only literal numeric RHS values are consumed by this syntax
(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
resolves them and writes the result into the same per-block dictionary.
The two syntaxes are decoupled — the evaluator's lookup tracebacks via
SyntaxPiece linkage so it does not depend on having run before
@@ -205,9 +205,9 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax()
@@ -232,14 +232,14 @@ or after this syntax.
-
+
-
+
VolatileVariableReadingSyntax(XElement)
- Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+ Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
@@ -269,69 +269,7 @@ or after this syntax.
-
- VarsSection
-
-
-
- Top-level JSON section that hosts per-block variable dictionaries.
-
-
-
-
- public const string VarsSection = "Vars"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
- VolatileKey
-
-
-
- Sub-key under VarsSection for the non-retained common dictionary.
-
-
-
-
- public const string VolatileKey = "Volatile"
-
-
-
-
-
- Field Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- public ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under
+
-
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
VolatileVariableReadingSyntax(XElement)
-Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
+Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.
- VarsSection - -
- -Top-level JSON section that hosts per-block variable dictionaries.
-public const string VarsSection = "Vars"
- Field Value
--
-
- string - -
- VolatileKey - -
- -Sub-key under VarsSection for the non-retained common dictionary.
-public const string VolatileKey = "Volatile"
- Field Value
--
-
- string - -
+
VolatileMax
@@ -362,7 +300,7 @@ or after this syntax.
-
+
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax.
-
+
-
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
VolatileMin
@@ -396,9 +334,9 @@ or after this syntax. - + -
+
Name
@@ -428,9 +366,9 @@ or after this syntax.
-
+
-
+
XName
@@ -464,9 +402,9 @@ or after this syntax.
-
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
XName
@@ -464,9 +402,9 @@ or after this syntax. - + -
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -501,9 +439,9 @@ or after this syntax.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
new file mode 100644
index 00000000..5fd826a2
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html
@@ -0,0 +1,369 @@
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Namespace Hi.NcParsers.EvaluationSyntaxs
+
+
+
+
+
+Classes
+
+
+ - FanucSystemControlVariableSyntax
+ Consumes Fanuc-style system-control variable assignments
+(#3000-#3999) — alarm trigger (#3000), millisecond and
+hour clocks (#3001 / #3002), single-block / feed-hold
+bypass flags (#3003 / #3004), pause-with-message
+(#3006), mirror-image flags (#3007), date / time
+(#3011 / #3012), tool-life data (#3030 /
+#3032), etc.
+
+Every id in this range is a controller-side state variable — its
+authoritative value lives on the real hardware (RTC, alarm bus,
+override switches, …) and an NC write at most triggers a side effect
+(clock reset, alarm raise, message-pause prompt). Offline simulation
+has none of that machinery, so this syntax does not emulate the
+effect. Instead it:
+
+- records the literal write on the block JSON under
+
Vars.SystemControl (round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported
+UnsupportedMessage(Sentence, string, string, object)
+so the user knows the assignment was recognised but its controller-side
+effect is not simulated. Message-severity (not Warning) because these
+writes are safe no-ops offline — every consumed assignment would emit
+a Warning per block, which would be noisy without signalling anything
+the user must act on; - removes the entry from
Parsing.Assignments so it does not
+re-surface as a generic Parsing--Unconsumed diagnostic.
+
+The dictionary carries forward block-by-block (same dict-merge pattern
+as VolatileVariableReadingSyntax) so a downstream consumer
+can read the most recent recorded value via SyntaxPiece linkage.
+
+
+Only literal numeric RHS values are consumed; non-literal RHS
+(e.g. #3002 = #500) is left in Parsing.Assignments for
+VariableEvaluatorSyntax to resolve, mirroring the
+retained / volatile reading syntaxes.
+
+
+Fanuc-family only — Siemens uses named system variables
+($AC_TIME, $A_DAY, …) and Heidenhain uses
+FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.
+
+
+
+
+ - RetainedCommonVariableReadingSyntax
+ Obtains values for Fanuc-style retained common variables (#500-#999)
+by consuming literal numeric assignments from Parsing.Assignments.#nnn
+and writing them straight to a registered
+RetainedCommonVariableTable.
+
+No SyntaxPiece JSON mirror is created — the table is the single source of
+truth for retained values, and VariableEvaluatorSyntax reads
+from the table directly. The hincproj round-trip preserves writes across
+project sessions.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result through the same table. The two
+syntaxes are decoupled.
+
+
+If no RetainedCommonVariableTable is registered on the
+runner's NcDependencyList, this syntax is a no-op.
+
+
+
+
+ - SubProgramCallSyntax
+ Inlines a Fanuc-style subprogram into the source layer when an M98 or
+M198 host block is reached. M98 P_ L_ reads the matching
+O<P> file from InternalFolder;
+M198 P_ reads from ExternalFolder
+(Fanuc external-storage call — same mechanism as M98, different lookup
+root). The file is segmented through the host runner's segmenter
+(SegmenterDependency) and the resulting
+SyntaxPieces are prepended into layers[0] via
+PrependSource(IEnumerable<T>); the rest of the
+pipeline picks them up through ordinary walkNode.Next
+traversal as if they had always been part of the host file.
+
+Pipeline placement: first child of the Fanuc Evaluation
+BundleSyntax. By the time this runs,
+M98Syntax /
+M198Syntax
+(each a ParameterizedFlagSyntax) have written a
+Parsing.M98 / Parsing.M198 sub-object carrying the
+captured P / L parameters. Note: those sub-objects
+are this syntax's only trigger — "M98" / "M198"
+never reach Parsing.Flags, because the parameterized
+match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+Filename lookup uses a fallback chain:
+O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},
+{P:D4}.NC, {P}.NC — first match wins. Case-insensitive
+match is delegated to the host filesystem (Windows is, Linux is not).
+
+
+L > 1 inlines the same subprogram L times in series. Each
+repetition is a fresh segmentation pass so each block gets its own
+SyntaxPiece with an independent JSON object — the
+downstream pipeline mutates JSON in place and would clobber sibling
+repetitions if instances were shared.
+
+
+Not yet supported: M99 P{seq} early return inside a
+subprogram, partial-program calls (M98 P{seq}{prog} split
+encoding), and arg binding (G65 macro is a separate syntax).
+
+
+
+
+ - SubProgramReturnSyntax
+ Consumes Fanuc-style M99 subprogram-return blocks.
+
+In the inline model used by SubProgramCallSyntax, a
+plain M99 at the end of a subprogram is implicit: the
+inlined blocks are followed in layers[0] by the caller's
+next block, so the natural pipeline traversal already does the
+"return". This syntax therefore only consumes the M99 flag (so
+UnconsumedCheckSyntax doesn't warn)
+and records a SubProgramReturn section for cache-dump
+visibility.
+
+
+M99 P{seq} (return to caller's N{seq} sequence
+number) is captured in P but not yet
+honoured — the subprogram tail still proceeds straight into the
+caller's next block. Implementing the jump requires a forward scan
+of the post-host caller blocks for a matching N{seq} head
+index, then dropping the intervening blocks; deferred until the
+caller-side walk semantics are designed.
+
+
+Pipeline placement: anywhere after Parsing has populated
+Parsing.M99. Conventionally placed alongside
+SubProgramCallSyntax at the head of the Evaluation
+bundle so call/return live next to each other.
+
+
+Detection is on the Parsing.M99 sub-object written by
+M99Syntax
+(a ParameterizedFlagSyntax) — the keyword
+"M99" never reaches Parsing.Flags because the
+parameterized match has already consumed the text by the time
+NumberedFlagSyntax runs.
+
+
+
+
+ - VariableEvaluatorSyntax
+ Pure expression normalizer for Custom Macro B syntax. Walks the
+parser-stage residue on a single block and inlines numeric values
+wherever a Fanuc-style variable reference or bracket expression
+appears — but does not write to any specific store. Routing
+“where the resolved literal lands” stays in the brand-specific
+reader syntaxes (VolatileVariableReadingSyntax,
+RetainedCommonVariableTable's reader,
+FanucSystemControlVariableSyntax, …) which run
+after this syntax on the same block.
+
+Two passes per block:
+
+-
+Assignments normalize —
Parsing.Assignments.#nnn entries
+whose RHS is non-literal (e.g. "#500+1", "SQRT[#100]")
+are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is
+replaced with the resolved literal (round-trip-safe
+"R"-format). The entry stays in Parsing.Assignments so
+downstream reader syntaxes consume it as a pure-literal assignment.
+Iteration follows source order (Parsing.Assignments insertion order).
+ -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag> (axis tags, canned-cycle sub-objects)
+is parsed; on a successful evaluation the string is replaced with a
+numeric JsonValue. Failures silently leave the original
+string and rely on downstream
+GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
+VariableExpression--Unevaluated only if the tag is actually read.
+
+
+Lookup chain (first non-null wins, configured per brand preset via
+RuntimeVariableLookups + IVariableLookup
+instances on NcDependencyList):
+
+- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literal is visible to a later
+RHS that mentions #nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33),
+VolatileVariableLookup (#100-#499),
+FanucPositionVariableLookup
+(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order
+(RetainedCommonVariableTable,
+FanucParameterTable,
+FanucToolOffsetVariableLookup).
+
+Each lookup self-gates its id range; the evaluator stays brand- and
+range-agnostic. Adding a new variable surface is additive: register
+an IVariableLookup on a dependency or push an
+IRuntimeVariableLookup onto the per-preset list.
+
+
+Same-block forward reference — when an Assignment RHS
+references a #nnn that is also being assigned later in
+the same block (i.e. listed in Parsing.Assignments after the
+RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up
+the not-yet-resolved value and falls back to traceback /
+dependency-table reads — effectively the pre-block value. A
+VariableEvaluator--SameBlockForwardReference warning is
+emitted per such RHS so the user is told the source-order semantics
+were not honoured. Practical impact is near-zero for typical
+CAM-emitted NC (one assignment per line).
+
+
+
+
+ - VolatileVariableReadingSyntax
+ Obtains values for Fanuc-style non-retained common variables
+(#100-#499). Reads literal numeric assignments from
+Parsing.Assignments.#nnn, dict-merges them with the previous block's
+volatile state, and writes the resulting per-block dictionary into
+Vars.Volatile.
+
+Lifetime is bounded by MachiningSession: within one session the
+dictionary carries forward block-by-block via this syntax; session restart
+abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
+(M02/M30) clearing is handled by ProgramEndCleanSyntax.
+
+
+Only literal numeric RHS values are consumed by this syntax
+(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
+are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
+resolves them and writes the result into the same per-block dictionary.
+The two syntaxes are decoupled — the evaluator's lookup tracebacks via
+SyntaxPiece linkage so it does not depend on having run before
+or after this syntax.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
new file mode 100644
index 00000000..280a01fc
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucProgramNumber.html
@@ -0,0 +1,345 @@
+
+
+
+
+ Class FanucProgramNumber | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class FanucProgramNumber
+
+
+
+
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
+
+
+
+
+ public class FanucProgramNumber
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ FanucProgramNumber
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+
+
+
+
+
+ WrapperAngle
+
+
+
+ Wrapper value for the angle-bracketed form: <O1234>.
+
+
+
+
+ public const string WrapperAngle = "Angle"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+ Remarks
+ Fanuc 30i / 31i / 32i extended program-name notation. Some CAM
+post-processors emit this at the head of subprogram files.
+
+
+
+
+
+
+
+ WrapperNone
+
+
+
+ Wrapper value for the bare form: O1234.
+
+
+
+
+ public const string WrapperNone = "None"
+
+
+
+
+
+ Field Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Number
+
+
+
+ The numeric portion of the program identifier, as written (no leading zero normalization).
+
+
+
+
+ public string Number { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper
+
+
+
+ Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
+
+
+
+
+ public string Wrapper { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
new file mode 100644
index 00000000..5e05572d
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html
@@ -0,0 +1,337 @@
+
+
+
+
+ Class SubProgramCall | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramCall
+
+
+
+
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+
+ public class SubProgramCall
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramCall
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ File
+
+
+
+ Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+
+
+
+
+ public string File { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L
+
+
+
+ Repeat count from the L parameter; defaults to 1 when absent.
+
+
+
+
+ public int L { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P
+
+
+
+ Subprogram number from the P parameter (e.g., 1234 for O1234).
+
+
+
+
+ public int P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword: “M98” (internal) or “M198” (external storage).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
new file mode 100644
index 00000000..aa03616f
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html
@@ -0,0 +1,277 @@
+
+
+
+
+ Class SubProgramReturn | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class SubProgramReturn
+
+
+
+
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+
+ public class SubProgramReturn
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ SubProgramReturn
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ P
+
+
+
+ Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
+
+
+
+
+ public int? P { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int?
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Term
+
+
+
+ Triggering keyword (always “M99” for now).
+
+
+
+
+ public string Term { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
index d7eadc07..bc486f16 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ProgramBoundary.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.TapeBoundary.html
@@ -2,11 +2,11 @@
- Class ProgramBoundary | HiAPI-C# 2025
+ Class TapeBoundary | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
MakeXmlSource(string, string, bool)
@@ -543,7 +481,7 @@ This method may also generate additional resources such as related files. -Remarks
+Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
Table of Contents
+ +Namespace Hi.NcParsers.EvaluationSyntaxs
+ + + + ++Classes +
+-
+
- FanucSystemControlVariableSyntax +
Consumes Fanuc-style system-control variable assignments +(
+#3000-#3999) — alarm trigger (#3000), millisecond and +hour clocks (#3001/#3002), single-block / feed-hold +bypass flags (#3003/#3004), pause-with-message +(#3006), mirror-image flags (#3007), date / time +(#3011/#3012), tool-life data (#3030/ +#3032), etc.+Every id in this range is a controller-side state variable — its +authoritative value lives on the real hardware (RTC, alarm bus, +override switches, …) and an NC write at most triggers a side effect +(clock reset, alarm raise, message-pause prompt). Offline simulation +has none of that machinery, so this syntax does not emulate the +effect. Instead it: +
+- records the literal write on the block JSON under
+
Vars.SystemControl(round-trip and cache-dump visibility); - emits a
FanucSystemControl--Unsupported+UnsupportedMessage(Sentence, string, string, object) +so the user knows the assignment was recognised but its controller-side +effect is not simulated. Message-severity (not Warning) because these +writes are safe no-ops offline — every consumed assignment would emit +a Warning per block, which would be noisy without signalling anything +the user must act on; - removes the entry from
Parsing.Assignmentsso it does not +re-surface as a genericParsing--Unconsumeddiagnostic.
+The dictionary carries forward block-by-block (same dict-merge pattern +as VolatileVariableReadingSyntax) so a downstream consumer +can read the most recent recorded value via
+SyntaxPiecelinkage. ++Only literal numeric RHS values are consumed; non-literal RHS +(e.g.
+#3002 = #500) is left inParsing.Assignmentsfor +VariableEvaluatorSyntax to resolve, mirroring the +retained / volatile reading syntaxes. ++Fanuc-family only — Siemens uses named system variables +(
+$AC_TIME,$A_DAY, …) and Heidenhain uses +FN18: SYSREAD; neither flows throughParsing.Assignments.#nnn. +
+ - records the literal write on the block JSON under
+
-
+
- RetainedCommonVariableReadingSyntax +
Obtains values for Fanuc-style retained common variables (
+#500-#999) +by consuming literal numeric assignments fromParsing.Assignments.#nnn+and writing them straight to a registered +RetainedCommonVariableTable.+No SyntaxPiece JSON mirror is created — the table is the single source of +truth for retained values, and VariableEvaluatorSyntax reads +from the table directly. The hincproj round-trip preserves writes across +project sessions. +
++Only literal numeric RHS values are consumed by this syntax +(
+#500 = 1.234✓;#600 = #500 + 1✗). Non-literal RHS entries +are left untouched inParsing.Assignments; VariableEvaluatorSyntax +resolves them and writes the result through the same table. The two +syntaxes are decoupled. ++If no RetainedCommonVariableTable is registered on the +runner's
+NcDependencyList, this syntax is a no-op. +
+
-
+
- SubProgramCallSyntax +
Inlines a Fanuc-style subprogram into the source layer when an M98 or +M198 host block is reached.
+M98 P_ L_reads the matching +O<P>file from InternalFolder; +M198 P_reads from ExternalFolder +(Fanuc external-storage call — same mechanism as M98, different lookup +root). The file is segmented through the host runner's segmenter +(SegmenterDependency) and the resulting +SyntaxPieces are prepended intolayers[0]via +PrependSource(IEnumerable<T>); the rest of the +pipeline picks them up through ordinarywalkNode.Next+traversal as if they had always been part of the host file.+Pipeline placement: first child of the Fanuc
+Evaluation+BundleSyntax. By the time this runs, +M98Syntax / +M198Syntax +(each a ParameterizedFlagSyntax) have written a +Parsing.M98/Parsing.M198sub-object carrying the +capturedP/Lparameters. Note: those sub-objects +are this syntax's only trigger —"M98"/"M198"+never reachParsing.Flags, because the parameterized +match has already consumed the text by the time +NumberedFlagSyntax runs. ++Filename lookup uses a fallback chain: +
+O{P:D4}.NC,O{P}.NC,O{P:D4},O{P}, +{P:D4}.NC,{P}.NC— first match wins. Case-insensitive +match is delegated to the host filesystem (Windows is, Linux is not). ++L > 1 inlines the same subprogram
+Ltimes in series. Each +repetition is a fresh segmentation pass so each block gets its own +SyntaxPiece with an independent JSON object — the +downstream pipeline mutates JSON in place and would clobber sibling +repetitions if instances were shared. ++Not yet supported:
+M99 P{seq}early return inside a +subprogram, partial-program calls (M98 P{seq}{prog}split +encoding), and arg binding (G65 macro is a separate syntax). +
+
-
+
- SubProgramReturnSyntax +
Consumes Fanuc-style
+M99subprogram-return blocks.+In the inline model used by SubProgramCallSyntax, a +plain
+M99at the end of a subprogram is implicit: the +inlined blocks are followed inlayers[0]by the caller's +next block, so the natural pipeline traversal already does the +"return". This syntax therefore only consumes the M99 flag (so +UnconsumedCheckSyntax doesn't warn) +and records a SubProgramReturn section for cache-dump +visibility. ++
+M99 P{seq}(return to caller'sN{seq}sequence +number) is captured in P but not yet +honoured — the subprogram tail still proceeds straight into the +caller's next block. Implementing the jump requires a forward scan +of the post-host caller blocks for a matchingN{seq}head +index, then dropping the intervening blocks; deferred until the +caller-side walk semantics are designed. ++Pipeline placement: anywhere after Parsing has populated +
+Parsing.M99. Conventionally placed alongside +SubProgramCallSyntax at the head of the Evaluation +bundle so call/return live next to each other. ++Detection is on the
+Parsing.M99sub-object written by +M99Syntax +(a ParameterizedFlagSyntax) — the keyword +"M99"never reachesParsing.Flagsbecause the +parameterized match has already consumed the text by the time +NumberedFlagSyntax runs. +
+
-
+
- VariableEvaluatorSyntax +
Pure expression normalizer for Custom Macro B syntax. Walks the +parser-stage residue on a single block and inlines numeric values +wherever a Fanuc-style variable reference or bracket expression +appears — but does not write to any specific store. Routing +“where the resolved literal lands” stays in the brand-specific +reader syntaxes (VolatileVariableReadingSyntax, +RetainedCommonVariableTable's reader, +FanucSystemControlVariableSyntax, …) which run +after this syntax on the same block.
++Two passes per block: +
+-
+Assignments normalize —
Parsing.Assignments.#nnnentries +whose RHS is non-literal (e.g."#500+1","SQRT[#100]") +are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is +replaced with the resolved literal (round-trip-safe +"R"-format). The entry stays inParsing.Assignmentsso +downstream reader syntaxes consume it as a pure-literal assignment. +Iteration follows source order (Parsing.Assignments insertion order). + -
+Parsing tree substitution — every string-typed value reachable
+from
Parsing.<tag>(axis tags, canned-cycle sub-objects) +is parsed; on a successful evaluation the string is replaced with a +numeric JsonValue. Failures silently leave the original +string and rely on downstream +GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface +VariableExpression--Unevaluatedonly if the tag is actually read. +
+Lookup chain (first non-null wins, configured per brand preset via +RuntimeVariableLookups + IVariableLookup +instances on
+NcDependencyList): +- Current block's own resolved assignments — built-in to
+VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in
+source order (an earlier
#nnn=literalis visible to a later +RHS that mentions#nnn). - Each IRuntimeVariableLookup in
+RuntimeVariableLookups, in list order. Typical contents
+for a Fanuc-family preset:
+LocalVariableLookup (
#1-#33), +VolatileVariableLookup (#100-#499), +FanucPositionVariableLookup +(#5001-#5043). - Each IVariableLookup on the runner's
+
NcDependencyList, in registration order +(RetainedCommonVariableTable, +FanucParameterTable, +FanucToolOffsetVariableLookup).
+Each lookup self-gates its id range; the evaluator stays brand- and +range-agnostic. Adding a new variable surface is additive: register +an IVariableLookup on a dependency or push an +IRuntimeVariableLookup onto the per-preset list. +
++Same-block forward reference — when an Assignment RHS +references a
+#nnnthat is also being assigned later in +the same block (i.e. listed inParsing.Assignmentsafter the +RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up +the not-yet-resolved value and falls back to traceback / +dependency-table reads — effectively the pre-block value. A +VariableEvaluator--SameBlockForwardReferencewarning is +emitted per such RHS so the user is told the source-order semantics +were not honoured. Practical impact is near-zero for typical +CAM-emitted NC (one assignment per line). +
+ -
+Assignments normalize —
-
+
- VolatileVariableReadingSyntax +
Obtains values for Fanuc-style non-retained common variables +(
+#100-#499). Reads literal numeric assignments from +Parsing.Assignments.#nnn, dict-merges them with the previous block's +volatile state, and writes the resulting per-block dictionary into +Vars.Volatile.+Lifetime is bounded by
+MachiningSession: within one session the +dictionary carries forward block-by-block via this syntax; session restart +abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end +(M02/M30) clearing is handled by ProgramEndCleanSyntax. ++Only literal numeric RHS values are consumed by this syntax +(
+#124 = 15.✓;#100 = #1 + 5✗). Non-literal RHS entries +are left untouched inParsing.Assignments; VariableEvaluatorSyntax +resolves them and writes the result into the same per-block dictionary. +The two syntaxes are decoupled — the evaluator's lookup tracebacks via +SyntaxPiecelinkage so it does not depend on having run before +or after this syntax. +
+
Table of Contents
+ ++Class FanucProgramNumber +
+ + + +Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
public class FanucProgramNumber
+ -
+
- Inheritance +
-
+
+ FanucProgramNumber+
+
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Fields +
+ + + ++ WrapperAngle + +
+ +Wrapper value for the angle-bracketed form: <O1234>.
public const string WrapperAngle = "Angle"
+ Field Value
+-
+
- string + +
Remarks
+Fanuc 30i / 31i / 32i extended program-name notation. Some CAM +post-processors emit this at the head of subprogram files.
++ WrapperNone + +
+ +Wrapper value for the bare form: O1234.
public const string WrapperNone = "None"
+ Field Value
+-
+
- string + +
Properties +
+ + + + ++ Number + +
+ +The numeric portion of the program identifier, as written (no leading zero normalization).
+public string Number { get; set; }
+ Property Value
+-
+
- string + +
+ Wrapper + +
+ +Surface form of the wrapping symbols around the O token —
+one of WrapperNone or WrapperAngle.
+New values may be added as additional notations are observed; consumers
+should treat unknown values as round-trip-only.
public string Wrapper { get; set; }
+ Property Value
+-
+
- string + +
Table of Contents
+ ++Class SubProgramCall +
+ + + +Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
public class SubProgramCall
+ -
+
- Inheritance +
-
+
+ SubProgramCall+
+
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Properties +
+ + + + ++ File + +
+ +Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.
+public string File { get; set; }
+ Property Value
+-
+
- string + +
+ L + +
+ +Repeat count from the L parameter; defaults to 1 when absent.
public int L { get; set; }
+ Property Value
+-
+
- int + +
+ P + +
+ +Subprogram number from the P parameter (e.g., 1234 for O1234).
public int P { get; set; }
+ Property Value
+-
+
- int + +
+ Term + +
+ +Triggering keyword: “M98” (internal) or “M198” (external storage).
public string Term { get; set; }
+ Property Value
+-
+
- string + +
Table of Contents
+ ++Class SubProgramReturn +
+ + + +Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
public class SubProgramReturn
+ -
+
- Inheritance +
-
+
+ SubProgramReturn+
+
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Properties +
+ + + + ++ P + +
+ +Optional caller sequence number from the P parameter
+(M99 P{seq}). Null on a plain M99. Currently
+recorded but not yet honoured — the subprogram's tail
+continues straight into the caller's next block, regardless of
+P.
public int? P { get; set; }
+ Property Value
+-
+
- int? + +
+ Term + +
+ +Triggering keyword (always “M99” for now).
public string Term { get; set; }
+ Property Value
+-
+
- string + +
-Class ProgramBoundary
+
+Class TapeBoundary
@@ -97,14 +97,16 @@ Class ProgramBoundary
- Assembly
- HiMech.dll
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
- public class ProgramBoundary
+ public class TapeBoundary
@@ -114,7 +116,7 @@ Not a comment — the controller uses it as a tape/file boundary marker.
Inheritance
- ProgramBoundary
+ TapeBoundary
@@ -180,46 +182,14 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
- Symbol
-
-
-
- Delimiter symbol (e.g., "%").
-
-
-
-
- public string Symbol { get; set; }
-
-
-
-
-
-
- Property Value
-
- - string
-
-
-
-
-
-
-
-
-
-
-
-
-
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- public ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
@@ -214,10 +218,10 @@ and records them under
+
-
- ProgramBoundarySyntax(XElement)
+
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them under
- Assembly
- HiMech.dll
Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
public class ProgramBoundary
+ public class TapeBoundary
- Symbol - -
- -Delimiter symbol (e.g., "%").
-public string Symbol { get; set; }
- Property Value
--
-
- string - -
+
Text
- Content after the symbol, typically a program number or empty.
+ Free-form content after the % on the same line, typically empty.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
new file mode 100644
index 00000000..f8cb1c02
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html
@@ -0,0 +1,320 @@
+
+
+
+
+ Class Vars | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class Vars
+
+
+
+
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
+
+
+
+
+ public class Vars
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ Vars
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Local
+
+
+
+ Macro-local sub-section (#1-#33).
+
+
+
+
+ public JsonObject Local { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemControl
+
+
+
+ System-control sub-section (#3000-#3999).
+
+
+
+
+ public JsonObject SystemControl { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Volatile
+
+
+
+ Non-retained common sub-section (#100-#499).
+
+
+
+
+ public JsonObject Volatile { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - JsonObject
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
index fe8e9569..f51083a4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html
@@ -169,6 +169,14 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
+
+ - FanucProgramNumber
+ Fanuc-family program identifier header that follows a
+TapeBoundary line — e.g. O1234 or
+<O1234>. Wrapper records the surface form
+so a parsed block can be emitted back to the original notation.
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
-
-
- - ProgramBoundary
- Program start/end delimiter line (e.g., % in Fanuc/Mazak/Syntec,
-%_N_xxx_MPF in Siemens).
-Not a comment — the controller uses it as a tape/file boundary marker.
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+
+
+ - SubProgramCall
+ Subprogram call record left on the M98 / M198 host block by
+SubProgramCallSyntax after the subprogram
+file has been inlined into the source layer. The call itself emits no
+motion act; this section is bookkeeping so cache dumps and diagnostic
+readers can see "this block triggered an inline of file File".
+
+
+
+ - SubProgramReturn
+ Subprogram return record left on the M99 host block by
+SubProgramReturnSyntax. Return blocks
+produce no motion acts; this section makes the consumed M99 visible
+in cache dumps and reserves a slot for future M99 P{seq}
+(return-to-sequence-number) support.
+
+
+
+ - TapeBoundary
+ Tape leader / trailer line — the literal % that historically
+marked the start and end of a punched paper-tape program. ISO-style
+controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
+file-level boundary marker. Distinct from a comment: the controller
+uses it as a tape/file delimiter, not as embedded operator text.
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
+ - Vars
+ JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+
+The sub-sections partition the variable space by lifetime:
+
+- Local —
#1-#33, scope: macro call frame
+(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common;
+carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. - SystemControl —
#3000-#3999, controller-side
+system variables; offline-only round-trip record (real controller
+effects such as clock reset / alarm trigger / message pause are not
+simulated).
+
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
index bbfd4220..13c6c6b4 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html
@@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
index 714419e6..d241f8e0 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html
@@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the
Real Fanuc clears non-retained common variables (#100-#499) on program
end + reset; this syntax models that behaviour at the simulator level.
The clear happens on the same block that carried M02/M30 — the next
-block's VolatileVariableReadingSyntax carry then sees an
+block's VolatileVariableReadingSyntax carry then sees an
empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax
(which writes the ProgramEnd section this syntax checks)
-and VolatileVariableReadingSyntax (so the carry has
+and VolatileVariableReadingSyntax (so the carry has
already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position
for subsequent block lookback.
-
-
-
- - RetainedCommonVariableReadingSyntax
- Obtains values for Fanuc-style retained common variables (#500-#999)
-by consuming literal numeric assignments from Parsing.Assignments.#nnn
-and writing them straight to a registered
-RetainedCommonVariableTable.
-
-No SyntaxPiece JSON mirror is created — the table is the single source of
-truth for retained values, and VariableEvaluatorSyntax reads
-from the table directly. The hincproj round-trip preserves writes across
-project sessions.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result through the same table. The two
-syntaxes are decoupled.
-
-
-If no RetainedCommonVariableTable is registered on the
-runner's NcDependencyList, this syntax is a no-op.
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
- - VariableEvaluatorSyntax
- Resolves Custom Macro B variable references and bracket expressions on
-a single block by walking the parser-stage residue and replacing each
-reference with its evaluated numeric value.
-
-Two passes per block:
-
--
-
Parsing.Assignments.#nnn entries with a non-literal RHS are
-evaluated in iteration order. Successful results are written to
-Vars.Volatile for #100-#499 or to the registered
-RetainedCommonVariableTable for #500-#999, and the
-entry is removed. Iteration order matters: an earlier RHS may set a
-variable that a later RHS reads. Failures (vacant operand, unsupported
-function, parse error) emit a VariableExpression--Unevaluated
-error and leave the entry in place; out-of-range ids are likewise left
-in place.
- -
-Every string-typed value reachable from
Parsing.<tag>
-(axis tags, canned-cycle sub-objects like Parsing.G81,
-Parsing.G54.1, etc.) is parsed; on a successful evaluation the
-string is replaced with a numeric JsonValue. Failures
-silently leave the original string and rely on downstream
-GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface
-VariableExpression--Unevaluated only if the tag is actually read.
-
-
-Lookup chain (first non-null wins):
-
-- Block-local
Vars.Local with Previous traceback (#1-#33). - Block-local
Vars.Volatile with traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g. RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-
-Each lookup is responsible for its own id-range gating — id ranges are
-not hard-coded inside this syntax. Adding a new variable surface
-(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive:
-register an IVariableLookup on a dependency or push an
-IRuntimeVariableLookup onto the per-preset list.
-
-
-
-
- - VolatileVariableReadingSyntax
- Obtains values for Fanuc-style non-retained common variables
-(#100-#499). Reads literal numeric assignments from
-Parsing.Assignments.#nnn, dict-merges them with the previous block's
-volatile state, and writes the resulting per-block dictionary into
-Vars.Volatile.
-
-Lifetime is bounded by MachiningSession: within one session the
-dictionary carries forward block-by-block via this syntax; session restart
-abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end
-(M02/M30) clearing is handled by ProgramEndCleanSyntax.
-
-
-Only literal numeric RHS values are consumed by this syntax
-(#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries
-are left untouched in Parsing.Assignments; VariableEvaluatorSyntax
-resolves them and writes the result into the same per-block dictionary.
-The two syntaxes are decoupled — the evaluator's lookup tracebacks via
-SyntaxPiece linkage so it does not depend on having run before
-or after this syntax.
-
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
index 4fe25751..7a8b608b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html
@@ -695,6 +695,80 @@ reported NcDiagnostic
+
+
+
+ UnsupportedMessage(Sentence, string, string, object)
+
+
+
+ Emits Unsupported + Message located at sentence.
+
+
+
+
+ public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnsupportedMessage(string, string, object)
+
+
+
+ Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+
+
+
+
+ public void UnsupportedMessage(string id, string text, object detail = null)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-
+
-
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
Content after the symbol, typically a program number or empty.
+Free-form content after the % on the same line, typically empty.
Table of Contents
+ ++Class Vars +
+ + + +JSON section schema for per-block variable storage. Each sub-property
+names a sub-section that holds a { “#nnn”: value } dictionary
+keyed by Fanuc-style variable id.
+The sub-sections partition the variable space by lifetime: +
+- Local —
#1-#33, scope: macro call frame +(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common; +carries block-to-block, cleared byProgramEndCleanSyntaxon M02 / M30. - SystemControl —
#3000-#3999, controller-side +system variables; offline-only round-trip record (real controller +effects such as clock reset / alarm trigger / message pause are not +simulated).
+The property types are JsonObject rather than strongly-typed
+dictionaries because each sub-section's keys are dynamic Fanuc variable
+ids (#100, #5001, …) discovered at parse time, not a fixed
+schema. This class exists solely to give the section name and sub-keys
+stable nameof() targets — instances are never constructed at
+runtime.
+
public class Vars
+ -
+
- Inheritance +
-
+
+ Vars+
+
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Properties +
+ + + + ++ Local + +
+ +Macro-local sub-section (#1-#33).
public JsonObject Local { get; set; }
+ Property Value
+-
+
- JsonObject + +
+ SystemControl + +
+ +System-control sub-section (#3000-#3999).
public JsonObject SystemControl { get; set; }
+ Property Value
+-
+
- JsonObject + +
+ Volatile + +
+ +Non-retained common sub-section (#100-#499).
public JsonObject Volatile { get; set; }
+ Property Value
+-
+
- JsonObject + +
- FanucPathSmoothing
Section data holder for IFanucPathSmoothingDef.
+
+
-
+
- FanucProgramNumber +
Fanuc-family program identifier header that follows a +TapeBoundary line — e.g.
O1234or +<O1234>. Wrapper records the surface form +so a parsed block can be emitted back to the original notation.
-
@@ -232,13 +240,6 @@ do not share this key, because their data shapes are richer.
- Positioning
Section key holder + concrete implementation for IPositioningDef.
-
- - ProgramBoundary -
Program start/end delimiter line (e.g.,
%in Fanuc/Mazak/Syntec, -%_N_xxx_MPFin Siemens). -Not a comment — the controller uses it as a tape/file boundary marker.- SpindleSpeed
Section key holder + concrete implementation for ISpindleSpeedDef.
+
+ - SubProgramCall +
Subprogram call record left on the M98 / M198 host block by +SubProgramCallSyntax after the subprogram +file has been inlined into the source layer. The call itself emits no +motion act; this section is bookkeeping so cache dumps and diagnostic +readers can see "this block triggered an inline of file
+File".
+ - SubProgramReturn +
Subprogram return record left on the M99 host block by +SubProgramReturnSyntax. Return blocks +produce no motion acts; this section makes the consumed M99 visible +in cache dumps and reserves a slot for future
+M99 P{seq}+(return-to-sequence-number) support.
+ - TapeBoundary +
Tape leader / trailer line — the literal
%that historically +marked the start and end of a punched paper-tape program. ISO-style +controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a +file-level boundary marker. Distinct from a comment: the controller +uses it as a tape/file delimiter, not as embedded operator text.- Vars +
JSON section schema for per-block variable storage. Each sub-property +names a sub-section that holds a
+{ “#nnn”: value }dictionary +keyed by Fanuc-style variable id.+The sub-sections partition the variable space by lifetime: +
+- Local —
#1-#33, scope: macro call frame +(pushed/popped by G65 / G66 / M99). - Volatile —
#100-#499, non-retained common; +carries block-to-block, cleared byProgramEndCleanSyntaxon M02 / M30. - SystemControl —
#3000-#3999, controller-side +system variables; offline-only round-trip record (real controller +effects such as clock reset / alarm trigger / message pause are not +simulated).
+The property types are JsonObject rather than strongly-typed +dictionaries because each sub-section's keys are dynamic Fanuc variable +ids (
#100,#5001, …) discovered at parse time, not a fixed +schema. This class exists solely to give the section name and sub-keys +stablenameof()targets — instances are never constructed at +runtime. +- Local —
- RetainedCommonVariableReadingSyntax -
Obtains values for Fanuc-style retained common variables (
-#500-#999) -by consuming literal numeric assignments fromParsing.Assignments.#nnn-and writing them straight to a registered -RetainedCommonVariableTable.-No SyntaxPiece JSON mirror is created — the table is the single source of -truth for retained values, and VariableEvaluatorSyntax reads -from the table directly. The hincproj round-trip preserves writes across -project sessions. -
--Only literal numeric RHS values are consumed by this syntax -(
-#500 = 1.234✓;#600 = #500 + 1✗). Non-literal RHS entries -are left untouched inParsing.Assignments; VariableEvaluatorSyntax -resolves them and writes the result through the same table. The two -syntaxes are decoupled. --If no RetainedCommonVariableTable is registered on the -runner's
NcDependencyList, this syntax is a no-op. -- VariableEvaluatorSyntax -
Resolves Custom Macro B variable references and bracket expressions on -a single block by walking the parser-stage residue and replacing each -reference with its evaluated numeric value.
--Two passes per block: -
--
-
Parsing.Assignments.#nnnentries with a non-literal RHS are -evaluated in iteration order. Successful results are written to -Vars.Volatilefor#100-#499or to the registered -RetainedCommonVariableTablefor#500-#999, and the -entry is removed. Iteration order matters: an earlier RHS may set a -variable that a later RHS reads. Failures (vacant operand, unsupported -function, parse error) emit aVariableExpression--Unevaluated-error and leave the entry in place; out-of-range ids are likewise left -in place. - -
-Every string-typed value reachable from
Parsing.<tag>-(axis tags, canned-cycle sub-objects likeParsing.G81, -Parsing.G54.1, etc.) is parsed; on a successful evaluation the -string is replaced with a numeric JsonValue. Failures -silently leave the original string and rely on downstream -GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface -VariableExpression--Unevaluatedonly if the tag is actually read. -
-Lookup chain (first non-null wins): -
-- Block-local
Vars.Localwith Previous traceback (#1-#33). - Block-local
Vars.Volatilewith traceback (#100-#499). - Each IVariableLookup in the runner's
NcDependencyList, in registration order (e.g.RetainedCommonVariableTable,FanucParameterTable,FanucToolOffsetTable). - Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order (e.g.
FanucPositionVariableLookup).
-Each lookup is responsible for its own id-range gating — id ranges are -not hard-coded inside this syntax. Adding a new variable surface -(Heidenhain Q parameters, Siemens GUDs, modal G/F/T reads) is additive: -register an IVariableLookup on a dependency or push an -IRuntimeVariableLookup onto the per-preset list. -
-
- -
-
- VolatileVariableReadingSyntax -
Obtains values for Fanuc-style non-retained common variables -(
-#100-#499). Reads literal numeric assignments from -Parsing.Assignments.#nnn, dict-merges them with the previous block's -volatile state, and writes the resulting per-block dictionary into -Vars.Volatile.-Lifetime is bounded by
-MachiningSession: within one session the -dictionary carries forward block-by-block via this syntax; session restart -abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end -(M02/M30) clearing is handled by ProgramEndCleanSyntax. --Only literal numeric RHS values are consumed by this syntax -(
#124 = 15.✓;#100 = #1 + 5✗). Non-literal RHS entries -are left untouched inParsing.Assignments; VariableEvaluatorSyntax -resolves them and writes the result into the same per-block dictionary. -The two syntaxes are decoupled — the evaluator's lookup tracebacks via -SyntaxPiecelinkage so it does not depend on having run before -or after this syntax. -
-
-
-
@@ -269,6 +270,33 @@ Not a comment — the controller uses it as a tape/file boundary marker.
-
+
-
+
-
+
-
@@ -284,6 +312,30 @@ Not a comment — the controller uses it as a tape/file boundary marker.
+
-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html index bbfd4220..13c6c6b4 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html @@ -104,13 +104,13 @@ triggered program end (M02 / M30, identified by the Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next -block's VolatileVariableReadingSyntax carry then sees an +block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) -and VolatileVariableReadingSyntax (so the carry has +and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html index 714419e6..d241f8e0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html @@ -648,13 +648,13 @@ triggered program end (M02 / M30, identified by the Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next -block's VolatileVariableReadingSyntax carry then sees an +block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh.
Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) -and VolatileVariableReadingSyntax (so the carry has +and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result).
@@ -790,31 +790,6 @@ Overwrites root ProgramXyz with reference position for subsequent block lookback.
- --
-
-
@@ -901,70 +876,6 @@ are forced to pre-convert the NC program to metric.
G21 is accepted as a no-op confirmation of
the default.
-
-
-
-
-
-
+ UnsupportedMessage(Sentence, string, string, object) + +
+ +Emits Unsupported + Message located at sentence.
public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+ Parameters
+ + + + + + + + + + + + + + + ++ UnsupportedMessage(string, string, object) + +
+ +Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).
+public void UnsupportedMessage(string id, string text, object detail = null)
+ Parameters
+ + + + + + + + + + + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
similarity index 74%
rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
index 56e488df..6f46fb93 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ProgramBoundarySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html
@@ -2,11 +2,11 @@
- Class ProgramBoundarySyntax | HiAPI-C# 2025
+ Class FanucProgramNumberSyntax | HiAPI-C# 2025
-
+
-
+
@@ -84,12 +84,12 @@
-Class ProgramBoundarySyntax
+
+Class FanucProgramNumberSyntax
@@ -97,13 +97,17 @@ Class ProgramBoundarySyntax
- Assembly
- HiMech.dll
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
- public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
@@ -113,7 +117,7 @@ and records them under object
- ProgramBoundarySyntax
+ FanucProgramNumberSyntax
@@ -187,10 +191,10 @@ and records them under
+
-
- ProgramBoundarySyntax()
+
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them under
- Assembly
- HiMech.dll
Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
public class ProgramBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ FanucProgramNumberSyntax()
@@ -199,7 +203,7 @@ and records them underpublic ProgramBoundarySyntax()
+ public FanucProgramNumberSyntax()
+ FanucProgramNumberSyntax(XElement)
@@ -226,13 +230,13 @@ and records them underpublic ProgramBoundarySyntax(XElement src)
+ public FanucProgramNumberSyntax(XElement src)
Parameters
@@ -251,9 +255,9 @@ and records them under + -
+
Name
@@ -283,9 +287,9 @@ and records them under
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under
+
-
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
XName
@@ -319,9 +323,9 @@ and records them under + -
+
Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
@@ -356,9 +360,9 @@ and records them under
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
new file mode 100644
index 00000000..ebcc6dc0
--- /dev/null
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html
@@ -0,0 +1,478 @@
+
+
+
+
+ Class TapeBoundarySyntax | HiAPI-C# 2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Class TapeBoundarySyntax
+
+
+
+ - Namespace
- Hi.NcParsers.ParsingSyntaxs
+ - Assembly
- HiMech.dll
+
+
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
+
+
+
+
+ public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+
+
+
+
+
+ - Inheritance
+ -
+
+ TapeBoundarySyntax
+
+
+
+
+ - Implements
+ -
+
+
+
+
+
+
+
+
+ - Inherited Members
+ -
+
+
+
+
+ object.GetType()
+
+
+
+
+
+
+
+ - Extension Methods
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Constructors
+
+
+
+
+
+
+ TapeBoundarySyntax()
+
+
+
+ Parameterless instance for bundle composition (no XML state).
+
+
+
+
+ public TapeBoundarySyntax()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TapeBoundarySyntax(XElement)
+
+
+
+ XML ctor (no child elements; reserved for forward compatibility).
+
+
+
+
+ public TapeBoundarySyntax(XElement src)
+
+
+ Parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+
+ Name
+
+
+
+ Syntax kind name (typically the concrete type name).
+
+
+
+
+ public string Name { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XName
+
+
+
+ XML element name for Regs registration.
+
+
+
+
+ public static string XName { get; }
+
+
+
+
+
+
+ Property Value
+
+ - string
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+
+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
+
+
+
+ Build syntax arrangement into the
+syntaxPieceNode in-place.
+
+
+
+
+ public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+
+ Parameters
+
+ syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyList List<INcDependency>
+
+ ncDiagnosticProgress NcDiagnosticProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>)
+
+
+
+ Returns true if the previous block carries a TapeBoundary
+section, or if there is no previous block at all (start-of-stream is
+itself a tape boundary). Brand-specific program-identifier syntaxes use
+this to decide whether the current block can host a program-number
+header.
+
+
+
+
+ public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+
+
+ Parameters
+
+ node LazyLinkedListNode<SyntaxPiece>
+
+
+
+ Returns
+
+ - bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MakeXmlSource(string, string, bool)
+
+
+
+ Creates an XML representation of the object.
+This method may also generate additional resources such as related files.
+
+
+
+
+ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+
+ Parameters
+
+ baseDirectory string
+ The base directory for resolving relative paths
+
+ relFile string
+ The relative file path for the XML source
+
+ exhibitionOnly bool
+ if true, the extended file creation is suppressed.
+
+
+
+ Returns
+
+ - XElement
+ An XML element representing the object's state
+
+
+
+
+
+
+
+
+
+ Remarks
+ For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
index 8a863701..736623b7 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html
@@ -121,6 +121,16 @@ regardless of the skip switch.
PreMarker marks a script that runs before the NC block;
PostMarker marks a script that runs after.
The symbols are configurable and serialized to XML.
+
+
+
+ - FanucProgramNumberSyntax
+ Detects a Fanuc-family program identifier header — O1234 or
+<O1234> — that follows a TapeBoundary
+line, and records it under FanucProgramNumber on the
+block JSON. The wrapping form (bare vs angle-bracketed) is preserved
+in Wrapper so the block can be emitted
+back to its original notation.
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
- - ProgramBoundarySyntax
- Detects program boundary markers: leading % tape header or O program number after a prior boundary,
-and records them under ProgramBoundary on the block JSON.
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
+
+ - TapeBoundarySyntax
+ Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
index 4e8d3555..409dfddc 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html
@@ -313,10 +313,11 @@ authored values (the latter have no
- Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
+ Full-set carrier (Logic ∪ PostLogic) —
+retained for the legacy backstop in
+SoftNcRunner that appends a single ModalCarry to
+pre-3.1.168 project syntax lists. New brand syntax kits should
+split into Logic + PostLogic instead.
@@ -341,6 +342,45 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ Logic
+
+
+
+ Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
+
+
+
+
+ public static ModalCarrySyntax Logic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
-
+
-
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -398,7 +402,7 @@ This method may also generate additional resources such as related files. -Remarks
+Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
Table of Contents
+ ++Class TapeBoundarySyntax +
+ +- Namespace
- Hi.NcParsers.ParsingSyntaxs
- Assembly
- HiMech.dll
Detects the % tape leader / trailer at the start of a block
+and records it under TapeBoundary on the block JSON.
+Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) —
+a brand's program-identifier header (e.g. Fanuc O1234) is a
+separate concern handled by its own brand-specific syntax.
public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+ -
+
- Inheritance +
-
+
+ TapeBoundarySyntax+
+
-
+
- Implements +
- + + + + +
-
+
- Inherited Members +
-
+
+
+
+ + object.GetType() ++ + + +
-
+
- Extension Methods +
- + + + + + + + +
Constructors +
+ + + + ++ TapeBoundarySyntax() + +
+ +Parameterless instance for bundle composition (no XML state).
+public TapeBoundarySyntax()
+ + TapeBoundarySyntax(XElement) + +
+ +XML ctor (no child elements; reserved for forward compatibility).
+public TapeBoundarySyntax(XElement src)
+ Parameters
+ + + + + + + + + + + + + +Properties +
+ + + + ++ Name + +
+ +Syntax kind name (typically the concrete type name).
+public string Name { get; }
+ Property Value
+-
+
- string + +
+ XName + +
+ +XML element name for Regs registration.
+public static string XName { get; }
+ Property Value
+-
+
- string + +
Methods +
+ + + + ++ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +
+ +Build syntax arrangement into the
+syntaxPieceNode in-place.
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+ Parameters
+-
+
syntaxPieceNodeLazyLinkedListNode<SyntaxPiece>
+
+ ncDependencyListList<INcDependency>
+
+ ncDiagnosticProgressNcDiagnosticProgress
+
+
+ IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>) + +
+ +Returns true if the previous block carries a TapeBoundary +section, or if there is no previous block at all (start-of-stream is +itself a tape boundary). Brand-specific program-identifier syntaxes use +this to decide whether the current block can host a program-number +header.
+public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece> node)
+ Parameters
+-
+
nodeLazyLinkedListNode<SyntaxPiece>
+
+
Returns
+-
+
- bool + +
+ MakeXmlSource(string, string, bool) + +
+ +Creates an XML representation of the object. +This method may also generate additional resources such as related files.
+public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+ Parameters
+-
+
baseDirectorystring
+ The base directory for resolving relative paths
+
+ relFilestring
+ The relative file path for the XML source
+
+ exhibitionOnlybool
+ if true, the extended file creation is suppressed.
+
+
Returns
+-
+
- XElement +
An XML element representing the object's state
+
+
Remarks
+For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
+The baseDirectory is typically the folder at the nearest configuration file folder.
+Since the folder can be moving with the configuration file.
-
+
- FanucProgramNumberSyntax +
Detects a Fanuc-family program identifier header —
O1234or +<O1234>— that follows a TapeBoundary +line, and records it under FanucProgramNumber on the +block JSON. The wrapping form (bare vs angle-bracketed) is preserved +in Wrapper so the block can be emitted +back to its original notation.
-
@@ -174,12 +184,6 @@ codes are kept as-is.
This is essentially a combination of main flag matching (like NumberedFlagSyntax)
plus scoped TagValueSyntax for the parameters after the main flag.
Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle.
-
-
-
-
- ProgramBoundarySyntax -
Detects program boundary markers: leading
%tape header orOprogram number after a prior boundary, -and records them under ProgramBoundary on the block JSON.
-
@@ -208,6 +212,15 @@ this class handles explicit assignment statements.
ex.
Heidenhain: L X Q2 Y33.4 FQ1
ISO: X100.3Y3.3
+
+
-
+
- TapeBoundarySyntax +
Detects the
%tape leader / trailer at the start of a block +and records it under TapeBoundary on the block JSON. +Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) — +a brand's program-identifier header (e.g. FanucO1234) is a +separate concern handled by its own brand-specific syntax.
Default-configured ModalCarrySyntax with the standard
-modal sections (TiltTransform, PathSmoothing,
-IsoLocalCoordinateOffset, CannedCycle, MotionState,
-MachineCoordinateState) tracked.
Full-set carrier (Logic ∪ PostLogic) — +retained for the legacy backstop in +SoftNcRunner that appends a single ModalCarry to +pre-3.1.168 project syntax lists. New brand syntax kits should +split into Logic + PostLogic instead.
TiltTransform, PathSmoothing,
+
+
+ + Logic + +
+ +Logic-stage carrier — modal sections that are written in the Logic
+bundle and never mutated by PostLogic. Carrying these at the end of
+each block's Logic bundle keeps single-step
+node.Previous modal lookups from Logic syntaxes correct, even
+when a PostLogic syntax (e.g.
+RadiusCompensationSyntax) does node.Next
+look-forward and drags subsequent blocks' Logic builds forward
+before the intermediate block's PostLogic ModalCarry has run.
public static ModalCarrySyntax Logic { get; }
+ Property Value
+-
+
- ModalCarrySyntax + +
@@ -373,6 +413,43 @@ modal sections (TiltTransform, PathSmoothing,
+
+
+
+ PostLogic
+
+
+
+ PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
+
+
+
+
+ public static ModalCarrySyntax PostLogic { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ModalCarrySyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
index 6fcdaa73..0534b448 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html
@@ -641,10 +641,10 @@ present on the chain into the NcDependencyList (linear or rotary, derived from
whether the chain's transformer implements
IDynamicRotation). When the chain carries any rotary
-axis, a NcKinematicsDependency is appended so that
+axis, a NcKinematicsDependency is appended so that
downstream syntaxes / semantics (e.g. G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+
+ M198Syntax
+
+
+
+ M198: Fanuc subprogram call from external storage (memory card,
+USB, DNC drive). Same parameter shape as M98Syntax;
+only the lookup root differs (see
+ExternalFolder).
+M198 P{program} [L{repeat}]
+
+
+
+
+ public static ParameterizedFlagSyntax M198Syntax { get; }
+
+
+
+
+
+
+ Property Value
+
+ - ParameterizedFlagSyntax
+
+
+
+
+
+
+
+
+
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
PostLogic-stage carrier — modal sections that may still be mutated
+by PostLogic syntaxes after Logic completes. Today only
+MachineCoordinateState qualifies (overwritten by
+RadiusCompensationSyntax with the radius-compensated
+position). Carrying these at the end of PostLogic ensures the
+modal value reflects the final, post-compensation state.
public static ModalCarrySyntax PostLogic { get; }
+ G53.1, G68.2,
McLinearMotionSemantic) can resolve
-orientation; its KinematicsProvider
+orientation; its KinematicsProvider
is intentionally left null — the owning project service wires it up
after the solver instance is available (see
LocalProjectService.BuildCoordinateConverter).
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
index 2d90c7ab..96967c50 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html
@@ -403,6 +403,42 @@ until cancelled by G67.
+
+
+ + M198Syntax + +
+ +M198: Fanuc subprogram call from external storage (memory card, +USB, DNC drive). Same parameter shape as M98Syntax; +only the lookup root differs (see +ExternalFolder). +M198 P{program} [L{repeat}]
+public static ParameterizedFlagSyntax M198Syntax { get; }
+ Property Value
+-
+
- ParameterizedFlagSyntax + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
index da0db851..8314faf3 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html
@@ -298,6 +298,45 @@ to store typed values at parse time.
+
+
+
+ SentenceIndex
+
+
+
+ 0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
+
+
+
+
+ public int SentenceIndex { get; set; }
+
+
+
+
+
+
+ Property Value
+
+ - int
+
+
+
+
+
+
+
+
+
+
Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
similarity index 77%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
index a7669339..4173855b 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.EnablingWrapper.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html
@@ -6,7 +6,7 @@
-
+
@@ -84,25 +84,25 @@
0-based ordinal in NC execution order. Stamped at piece construction
+time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination
+layers[0]'s running count, so subprogram pieces inlined by
+SubProgramCallSyntax get sequential indices that interleave
+correctly between host blocks. Useful as a cross-process alignment
+key (messages, ClStripPos, MachiningStep) — unlike
+FileLineUtil.MixedIndex(), it reflects execution order rather
+than (FileIndex, LineIndex) source order.
public int SentenceIndex { get; set; }
+
+
Class EnablingWrapper
- Wrapper for shell commands that provides enable/disable functionality.
+ Wrapper for session commands that provides enable/disable functionality.
- public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class EnablingWrapper
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Wrapper for shell commands that provides enable/disable functionality.
+Wrapper for session commands that provides enable/disable functionality.
public class EnablingWrapper : IShellCommand, IMakeXmlSource
+ public class EnablingWrapper : ISessionCommand, IMakeXmlSource
- Implements
- - +
+
EnablingWrapper()
@@ -212,24 +212,24 @@ Class EnablingWrapper
-
+
-
- EnablingWrapper(IShellCommand)
+
+ EnablingWrapper(ISessionCommand)
- Initializes a new instance of the EnablingWrapper class with the specified command.
+ Initializes a new instance of the EnablingWrapper class with the specified command.
- public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
- command IShellCommand
+ command ISessionCommand
The command to wrap.
@@ -245,9 +245,9 @@ Class EnablingWrapper
-
+
-
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
+ EnablingWrapper(ISessionCommand)
-Initializes a new instance of the EnablingWrapper class with the specified command.
+Initializes a new instance of the EnablingWrapper class with the specified command.
public EnablingWrapper(IShellCommand command)
+ public EnablingWrapper(ISessionCommand command)
Parameters
-
-
commandIShellCommand
+ commandISessionCommandThe command to wrap.
+
EnablingWrapper(XElement, string, string, IProgress<object>, object[])
@@ -294,19 +294,19 @@ Class EnablingWrapper
-
+
-
+
Command
- Gets or sets the wrapped shell command.
+ Gets or sets the wrapped session command.
- public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
@@ -315,7 +315,7 @@ Class EnablingWrapper
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper
-
+
-
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Command
-Gets or sets the wrapped shell command.
+Gets or sets the wrapped session command.
public IShellCommand Command { get; set; }
+ public ISessionCommand Command { get; set; }
Property Value
@@ -326,9 +326,9 @@ Class EnablingWrapper - + -
+
IsEnabled
@@ -358,9 +358,9 @@ Class EnablingWrapper
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
XName
@@ -394,9 +394,9 @@ Class EnablingWrapper - + -
+
MakeXmlSource(string, string, bool)
@@ -436,7 +436,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -445,25 +445,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
index 92ec034d..b9134156 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.GeomDiffCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class GeomDiffCommand
@@ -102,7 +102,7 @@ Class GeomDiffCommand
- public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class GeomDiffCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand
-
+
-
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class GeomDiffCommand : IShellCommand, IMakeXmlSource
+ public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
GeomDiffCommand()
@@ -212,9 +212,9 @@ Class GeomDiffCommand - + -
+
GeomDiffCommand(XElement, string)
@@ -253,7 +253,7 @@ Class GeomDiffCommand
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand
-
+
-
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
ConstDisplayName
@@ -287,9 +287,9 @@ Class GeomDiffCommand - + -
+
DetectRadius_mm
@@ -319,9 +319,9 @@ Class GeomDiffCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
XName
@@ -355,9 +355,9 @@ Class GeomDiffCommand - + -
+
MakeXmlSource(string, string, bool)
@@ -397,7 +397,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -406,25 +406,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
similarity index 85%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
index 10a72c5d..b0962b91 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.IShellCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ISessionCommand.html
@@ -2,11 +2,11 @@
- Interface IShellCommand | HiAPI-C# 2025
+ Interface ISessionCommand | HiAPI-C# 2025
-
+
-
+
@@ -84,25 +84,25 @@
-
+
-
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
-Interface IShellCommand
+
+Interface ISessionCommand
- Interface for commands that can be executed in a milling course.
+ Interface for commands that can be executed in a machining session.
- public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
@@ -153,25 +153,25 @@ Interface IShellCommand
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Interface for commands that can be executed in a milling course.
+Interface for commands that can be executed in a machining session.
public interface IShellCommand : IMakeXmlSource
+ public interface ISessionCommand : IMakeXmlSource
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
similarity index 89%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
index a00ed172..d03c2c32 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ITitleCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
IEnumerable<Action> Run(RuntimeApi scriptApi)
+ IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Interface ITitleCommand
- IShellCommand with title.
+ ISessionCommand with title.
- public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
@@ -115,7 +115,7 @@ Interface ITitleCommand
Inherited Members
IMakeXmlSource.MakeXmlSource(string, string, bool)
@@ -156,9 +156,9 @@ Interface ITitleCommand
-
+
-
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
-
+
-
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
IShellCommand with title.
+ISessionCommand with title.
public interface ITitleCommand : IShellCommand, IMakeXmlSource
+ public interface ITitleCommand : ISessionCommand, IMakeXmlSource
+
GetCommandTitle()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
similarity index 97%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
index db0be2ba..358f1a44 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.Lang.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.Lang.html
@@ -84,16 +84,16 @@
+
Class Lang
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
similarity index 82%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
index 107fa16c..b2593b8e 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.ListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html
@@ -84,16 +84,16 @@
+
Class ListCommand
@@ -102,7 +102,7 @@ Class ListCommand
- public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class ListCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class ListCommand
-
+
-
+
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand
-
+
-
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class ListCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
ListCommand()
@@ -213,9 +213,9 @@ Class ListCommand - + -
+
ListCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class ListCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.
Property Value
@@ -295,9 +295,9 @@ The item in list is null capable.
-
+
-
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
CommandEntryList
@@ -284,7 +284,7 @@ The item in list is null capable.Property Value
@@ -295,9 +295,9 @@ The item in list is null capable. - + -
+
XName
@@ -331,9 +331,9 @@ The item in list is null capable.
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
GetCommandTitle()
@@ -364,9 +364,9 @@ The item in list is null capable. - + -
+
MakeXmlSource(string, string, bool)
@@ -406,7 +406,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -415,25 +415,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
index 38b500ff..ffddea0a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.MachiningMotionResolutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class MachiningMotionResolutionCommand
@@ -102,7 +102,7 @@ Class MachiningMotionResolutionCommand
- public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class MachiningMotionResolutionCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class MachiningMotionResolutionCommand : IShellCommand, IMakeXmlSource
+ public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
MachiningMotionResolutionCommand()
@@ -212,9 +212,9 @@ Class MachiningMotionResolutionCommand - + -
+
MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>)
@@ -258,9 +258,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MachiningMotionResolution
@@ -290,9 +290,9 @@ Class MachiningMotionResolutionCommand - + -
+
XName
@@ -326,9 +326,9 @@ Class MachiningMotionResolutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -377,25 +377,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -368,7 +368,7 @@ This method may also generate additional resources such as related files. -Remarks
+Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
similarity index 80%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
index da84c3c4..965c087a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcCodeCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class NcCodeCommand
@@ -102,7 +102,7 @@ Class NcCodeCommand
- public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcCodeCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class NcCodeCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
NcCodeCommand()
@@ -213,14 +213,14 @@ Class NcCodeCommand - + -
+
NcCodeCommand(string)
- Initializes a new instance of the NcCodeCommand class with the specified NC text.
+ Initializes a new instance of the NcCodeCommand class with the specified NC text.
@@ -246,9 +246,9 @@ Class NcCodeCommand
-
+
-
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Initializes a new instance of the NcCodeCommand class with the specified NC text.
+Initializes a new instance of the NcCodeCommand class with the specified NC text.
+
NcCodeCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcCodeCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand
-
+
-
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
NcText
@@ -318,9 +318,9 @@ Class NcCodeCommand - + -
+
Title
@@ -351,9 +351,9 @@ Alternative file name for the NC code file.
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file.
-
+
-
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
XName
@@ -387,9 +387,9 @@ Alternative file name for the NC code file. - + -
+
GetCommandTitle()
@@ -420,9 +420,9 @@ Alternative file name for the NC code file.
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -471,25 +471,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -462,7 +462,7 @@ This method may also generate additional resources such as related files. -Remarks
+Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
index b47d97cc..1128677d 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class NcFileCommand
@@ -102,7 +102,7 @@ Class NcFileCommand
- public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcFileCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class NcFileCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
NcFileCommand()
@@ -213,14 +213,14 @@ Class NcFileCommand - + -
+
NcFileCommand(string)
- Initializes a new instance of the NcFileCommand class with the specified NC file path.
+ Initializes a new instance of the NcFileCommand class with the specified NC file path.
@@ -246,9 +246,9 @@ Class NcFileCommand
-
+
-
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Initializes a new instance of the NcFileCommand class with the specified NC file path.
+Initializes a new instance of the NcFileCommand class with the specified NC file path.
+
NcFileCommand(XElement, string)
@@ -286,9 +286,9 @@ Class NcFileCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand
-
+
-
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
NcFile
@@ -318,9 +318,9 @@ Class NcFileCommand - + -
+
XName
@@ -354,9 +354,9 @@ Class NcFileCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
GetCommandTitle()
@@ -387,9 +387,9 @@ Class NcFileCommand - + -
+
MakeXmlSource(string, string, bool)
@@ -429,7 +429,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -438,25 +438,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
similarity index 83%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
index 0e789da9..30ad018a 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcFileListCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class NcFileListCommand
@@ -102,7 +102,7 @@ Class NcFileListCommand
- public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class NcFileListCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand
-
+
-
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class NcFileListCommand : IShellCommand, IMakeXmlSource
+ public class NcFileListCommand : ISessionCommand, IMakeXmlSource
NcFileListCommand()
@@ -212,9 +212,9 @@ Class NcFileListCommand - + -
+
NcFileListCommand(XElement, string)
@@ -252,9 +252,9 @@ Class NcFileListCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
NcFileList
@@ -284,9 +284,9 @@ Class NcFileListCommand - + -
+
XName
@@ -320,9 +320,9 @@ Class NcFileListCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files. -Remarks
+Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
index 9eb6e446..c6296dca 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.NcOptOptionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class NcOptOptionCommand
@@ -102,7 +102,7 @@ Class NcOptOptionCommand
- public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class NcOptOptionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class NcOptOptionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
NcOptOptionCommand()
@@ -213,9 +213,9 @@ Class NcOptOptionCommand - + -
+
NcOptOptionCommand(XElement, string, string, IProgress<object>, object[])
@@ -262,9 +262,9 @@ Class NcOptOptionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand
-
+
-
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
NcOptOption
@@ -294,9 +294,9 @@ Class NcOptOptionCommand - + -
+
XName
@@ -330,9 +330,9 @@ Class NcOptOptionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
GetCommandTitle()
@@ -363,9 +363,9 @@ Class NcOptOptionCommand - + -
+
MakeXmlSource(string, string, bool)
@@ -405,7 +405,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -414,25 +414,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
similarity index 81%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
index 08fc9f33..2f1e5071 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.OptimizeToFilesCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html
@@ -84,25 +84,25 @@
-
+
-
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class OptimizeToFilesCommand
- Command to call OptimizeToFiles(string).
+ Command to call OptimizeToFiles(string).
- public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
@@ -119,7 +119,7 @@ Class OptimizeToFilesCommand
- Implements
-
-
+
@@ -185,9 +185,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Command to call OptimizeToFiles(string).
+Command to call OptimizeToFiles(string).
public class OptimizeToFilesCommand : IShellCommand, IMakeXmlSource
+ public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
- Implements
- - +
+
OptimizeToFilesCommand()
@@ -212,9 +212,9 @@ Class OptimizeToFilesCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand
-
+
-
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
OptimizeToFilesCommand(XElement, string)
@@ -252,9 +252,9 @@ Class OptimizeToFilesCommand - + -
+
RelFileTemplate
@@ -284,9 +284,9 @@ Class OptimizeToFilesCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand
-
+
-
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
XName
@@ -320,9 +320,9 @@ Class OptimizeToFilesCommand - + -
+
MakeXmlSource(string, string, bool)
@@ -362,7 +362,7 @@ This method may also generate additional resources such as related files.
- Remarks
+ Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
@@ -371,25 +371,25 @@ Since the folder can be moving with the configuration file.
-
+
-
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
- Run(RuntimeApi)
+
+ Run(SessionShell)
- Runs the command using the provided script API.
+ Runs the command, delegating execution to the provided session shell.
- public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
- scriptApi RuntimeApi
- Script API for executing milling commands.
+ sessionShell SessionShell
+ Session shell that exposes the machining facade to commands.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
similarity index 75%
rename from App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
index 59ac8f0f..4d062a5c 100644
--- a/App/wwwroot/HiAPI-docsite/api/Hi.ShellCommands.PostExecutionCommand.html
+++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html
@@ -84,16 +84,16 @@
-
+
-
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
Runs the command using the provided script API.
+Runs the command, delegating execution to the provided session shell.
public IEnumerable<Action> Run(RuntimeApi scriptApi)
+ public IEnumerable<Action> Run(SessionShell sessionShell)
Parameters
-
-
scriptApiRuntimeApi
- Script API for executing milling commands.
+sessionShellSessionShell
+ Session shell that exposes the machining facade to commands.
+
Class PostExecutionCommand
@@ -102,7 +102,7 @@ Class PostExecutionCommand
- public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
@@ -119,8 +119,8 @@ Class PostExecutionCommand
- Implements
-
-
-
+
+
@@ -186,9 +186,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand()
@@ -213,9 +213,9 @@ Class PostExecutionCommand
-
+
-
+
PostExecutionCommand(XElement, string, string, params object[])
@@ -259,9 +259,9 @@ Class PostExecutionCommand
-
+
-
+
EnableGeomDiff
@@ -291,9 +291,9 @@ Class PostExecutionCommand
-
+
-
+
EnableOptimizeToFiles
@@ -323,9 +323,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteRuntimeGeom
@@ -355,9 +355,9 @@ Class PostExecutionCommand
-
+
-
+
EnableWriteShotFiles
@@ -387,9 +387,9 @@ Class PostExecutionCommand
-
+
-
+
public class PostExecutionCommand : ITitleCommand, IShellCommand, IMakeXmlSource
+ public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource